IO 复习
IO
把电脑硬盘中的数据读到程序中,称为输入,进行数据的read操作
把程序往外部设备写数据,称为输出,进行数据的write操作
File类
一个File对象可以表示计算机硬盘上的一个文件或目录(文件夹)
可以获取文件信息,创建文件,删除文件
但是不能对文件中的数据进行读写操作
一些File类的方法
public class FileDemo {public static void main(String[] args) {
/*File类中构造方法*//*String p = "E:/";File f1 = new File(p,"demo.txt");File f2 = new File(p,"demo.txt");*/
/*File pf = new File("E:");File f2 = new File(pf,"demo.txt");*/
File f = new File("E:/demo.txt");System.out.println(f.canExecute());// 文件是否可以被执行System.out.println(f.canRead());// 是否可以读取System.out.println(f.canWrite());// 是否可以写
System.out.println("---------------------------");System.out.println(f.exists());// 文件是否存在System.out.println(f.getAbsolutePath());//获得文件绝对地址
System.out.println(f.getName());// 获取文件名字System.out.println(f.getParent());// 获取父级地址
System.out.println(f.isAbsolute());//是否为绝对路径System.out.println("---------------------------");System.out.println(f.isDirectory());// 是否是文件夹System.out.println(f.isFile());// 是否是文件System.out.println(f.isHidden());// 是否隐藏文件
System.out.println(new Date(f.lastModified()));//文件最后一次修改的时间System.out.println(f.length());//文件内容长度 以字节为单位
}
}
流的分类
按照流(java提供的读写文件的类)的读写单位划分为
字节流:每次读写是以字节为单位(计算机中的所有数据存储都是字节为单位) 可以读取任意文件(视频,音频...)
字符流:每次都写是以字符为单位 只能读取纯文本文件(txt,java,html)
字节流
输入字节流:InputStream
FileInputStream就是节点流 直接负责对接文件,对文件进行读写操作
输出字节流:OutputStream
FileOutputStream
public class StreamDemo1 {
public static void main(String[] args) throws IOException {
//创建一个输入字节流对象 并为其指定要读的文件FileInputStream in = new FileInputStream("E:/demo.txt");//输入的源文件不存在,会报错FileOutputStream out = new FileOutputStream("D:/demo.txt");//输出时文件不存在是可以自动创建//in.read() 每次读到一个字节数据 并返回, 直到读完后返回-1.int b = 0;while ((b = in.read()) != -1) {out.write(b);}in.close();out.close();//关闭流通道 释放文件}
}
public class StreamDemo2 {
public static void main(String[] args) throws IOException {
FileInputStream in= new FileInputStream("E:/feige.exe");FileOutputStream out = new FileOutputStream("E:/demo.exe");//read() write(int b) 每次只能读入 写出一个字节 效率低, 读写次数多//in.read(b); 每次读一个byte数组个字节内容,返回实际向数组装入的字节数量 读完也是返回-1byte[] b = new byte[1024];int size=0;// 每次最多读取b.length个字节数据为字节数组while((size=in.read(b))!=-1){System.out.println(size);//每次向外写出一个byte数组个字节,从第0个开始,写size个,效率高out.write(b,0,size);}in.close();out.close();}
}
根据封装类型不同流分为:
节点流: 封装的是某种特定的数据源,如文件、字符串、字符串数组等
FileInputStream就是节点流 直接负责对接文件,对文件进行读写操作
处理流:封装的是其他流对象,处理流提供了缓冲功能,提高读写效率,同时增加了一些新的方法
public class StreamDemo4 {
public static void main(String[] args) throws IOException {
//节点流 直接负责数据读和写FileInputStream in = new FileInputStream("E:/feige.exe");FileOutputStream out = new FileOutputStream("E:/demo.exe");
//处理流/包装流/缓存流(带缓冲区)BufferedInputStream bin = new BufferedInputStream(in);BufferedOutputStream bout = new BufferedOutputStream(out);
byte [] b = new byte[1024];int size = 0;while((size=bin.read())!=-1){bout.write(b,0,size);}
bin.close();bout.flush();//刷新缓存区bout.close();
}
}
字符流
字符流只能读纯文本文件
输入字符流:
Reader
InputStreamReader
输入转换流,可以把原始字节结合 编码转为字符
FileReader 可以读入一个字符
输出字符流:
Writer
OutputStreamWriter
将字符转为字节
FileWriter 可以写出一个字符
FileReader reader = new FileReader("E:/demo.txt");
FileWriter writer = new FileWriter("E:/demo1.txt");
char[] cs = new char[10];
int size = 0;
// reader.read();// 一次读到一个字符编码
while((size=reader.read(cs))!=-1){System.out.println(size);writer.write(cs,0,size);
}
reader.close();
writer.close();
//节点流 直接包含数据
FileReader reader = new FileReader("E:/demo.txt");
FileWriter writer = new FileWriter("E:/demo2.txt",true);//后面输出不会覆盖前面的,会保留前面的内容
//字符处理流BufferedReader breader = new BufferedReader(reader);BufferedWriter bwriter = new BufferedWriter(writer);//readLine() 一次读一行数据 一次缓冲一行数据String line = null;while((line=breader.readLine())!=null){bwriter.write(line);//一次写出一行数据bwriter.newLine();//插入一个换行符}
breader.close();bwriter.flush();//缓冲流关闭前需要刷新bwriter.close();
字符处理流这里我们可以一行一行的读和写,这样加大了读写操作的效率
对象输入流和对象输出流
对象---指的是java程序运行时产生的对象
将程序运行时,创建的对象,输出到一个文件中
为什么要将运行时的对象输出到文中?
为了实现数据 持久保存 有时,服务器要关闭(程序结束运行),结束运行时,将一些保存下来
对象输出-->对象序列化
对象输入流 将文件中存储的对象信息 在输入到程序中-->对象反序列化(java中创建对象的方式之一)
java中创建对象 不仅仅只有new一种 对象反序列化 反射
创建一个User类 并且实现Serializable接口,如果不实现的话,那么此类对象信息将无法被输出到文件中
//需要被序列化的类,必须实现Serializable接口,会为类生成一个序列化id号,是唯一与类对应
public class User implements Serializable {
private Integer id;private String name;
public User(Integer id, String name) {this.id = id;this.name = name;}
public Integer getId() {return id;}
public void setId(Integer id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
}
public class ObjectStream {
public static void main(String[] args) throws IOException, ClassNotFoundException {
/* Date date = new Date();String s = new String("abc");User user = new User(1, "jim");
// 讲对象信息输出到文件中 称为对象序列化 对象的类必须实现java.io.Serializable接口FileOutputStream out = new FileOutputStream("E:/obj.txt");ObjectOutputStream objectOut = new ObjectOutputStream(out);objectOut.writeObject(date);objectOut.writeObject(s);objectOut.writeObject(user);objectOut.flush();objectOut.close();*/
// 对象反序列化 将文件中的信息输入到程序 再创建一个对象FileInputStream in = new FileInputStream("E:/obj.txt");ObjectInputStream objIn = new ObjectInputStream(in);Date date = (Date) objIn.readObject();String s = (String) objIn.readObject();User user = (User) objIn.readObject();
System.out.println(date);System.out.println(s);System.out.println(user.getId()+":"+user.getName());}
}
相关文章:
IO 复习
IO 把电脑硬盘中的数据读到程序中,称为输入,进行数据的read操作 把程序往外部设备写数据,称为输出,进行数据的write操作 File类 一个File对象可以表示计算机硬盘上的一个文件或目录(文件夹) 可以获取文件信息,创建文件,删除文件 但是不能对文件中的数据进行读写操作 一些…...
什么是项目管理
项目管理(简称PM),就是将知识、技能、工具与技术应用于项目活动,以满足项目的要求。项目管理通过合理运用与整合特定项目所需的项目管理过程得以实现。项目管理使组织能够有效且高效地开展项目 “现代管理,项目就是一切…...
什么是入站营销?如何向合适的受众推销
没有什么比入站营销更有效地优先考虑客户体验了。 入站营销可为您的客户在他们需要的时间和地点准确提供他们想要的东西。它以最有机的方式在您的行业中建立信任、忠诚和权威。 什么是入站营销? 入站营销是一种商业方法,可提供优质内容和量身定制的客户…...
Qt 崩溃 corrupted double-linked list Aborted
文章目录摘要1 使用全局静态变量2 不取第一个和最后一个数3 将数据计算放到同一线程计算4 替换槽函数5 修改传值为const6 神奇的环境因素7 更神奇的板子差异8 另一个细节Aborted最后关键字: Qt、 Aborted、 corrupted、 double、 linked 摘要 额,结论&…...
牛逼了!这是什么神仙面试宝典?半月看完25大专题,居然斩获阿里P7offer
这是什么神仙面试宝典?半月看完25大专题,居然斩获阿里P7offer???????容我小小的嘚瑟一下下啦~~这份神仙面试宝典总共有25大专题:专题一:JavaOOP面…...
单链表详解
单链表一.概念二.一些类型的创建三.尾插四.头插五.头删尾删六.打印链表七.单链表查找,任意位置插入,任意位置删除八.源代码一.概念 该篇链表博客是按照工程项目的格式来记录的,与平常的算法链表有些许不同,注意区分。 二.一些类型的创建 三.尾…...
【AUTOSAR-CanNM】-3.1-如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出)
点击返回「《Autosar_BSW高阶配置》总目录」 案例背景(共5页精讲):该篇博文将告诉您: 如何让ECU发出的首帧/第一帧是网络管理NM报文/帧(Tx Nm报文先于Tx App应用报文发出) 目录 1 图解详述APP报文和NM报文是如何发送的...
html常用标签2和语法练习
目录 1.表单标签 form标签 input标签 选择框 复选框:checkbox 按钮框:button 文件选择框 多行编辑框:textarea 2.html语法练习 展示简历信息 填写简历信息 编辑 3.HTML特殊字符 1.表单标签 表单是让用户输入信息的重要途径 表单域:包含表单元素的区域,重点是form…...
【go语言之thrift协议三之client端分析】
go语言之thrift协议之client端分析runClientOpenprotocolFactory.GetProtocolhandleClientNewTStandardClientNewCalculatorClienthandleClient的具体实现上一篇文章分析了thrift协议server端的实现,这边还是基于官方的示例去分析。 import ("crypto/tls"…...
Codeforces Round #855 (Div. 3) A-E
传送门 A. Is It a Cat? 题意 给你一个只有英文字母的字符串,问你这个字符串是否由连续的’m’, ‘e’, ‘o’,‘w’,(顺序不能改变)构成,并且不区分大小写。 如: “meow”, “mmmEeOWww”, “MeOooOw” 是符合要求…...
3/3操作系统作业
目录 1.前趋图和程序执行 (1)前驱图 (2)程序的顺序执行 (3)程序的并发执行 2.进程的描述 (1)进程的定义与特征 编辑编辑(2)进程控制块编辑 &…...
「C/C++」 标准文件操作大全
一、设备文件(运行程序时会默认打开这三个设备文件) stdin:标准输入,默认为当前终端(键盘),我们使用的scanf、getchar函数默认从此终端获得数据。stdout: 标准输出,默认…...
一款SAST工具需要支持多少种编译器呢?
除了Java语言,C#语言之外,C、C语言是编译器类型最多的编程语言,有几十种编译器,这些编译器方言为研发SAST工具带来了巨大的工作量,很多产品由于无法适配客户的编译器,导致无法检测。下面我们罗列一下国外和…...
jvm mat分析dump文件
jvm调优中,经常使用dump来分析是否存在大对象导致频繁full gc,以下为使用步骤: 一、获得服务进程 ps -ef | grep list-app | grep -v grep 二、生成dump文件 jmap -dump:formatb,filexxx.dump pid jmap -dump:filetest.hprof,formatb 3307…...
python16行代码获取原神全角色+全语音
前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 本来是不玩原神的,但是实在是经不住双重诱惑呀~ 毕竟谁能拒绝角色风景超级好看又可以爬树、炸鱼、壶里造房子、抓小动物、躲猫猫的游戏捏~ 今天点进官网~角色得配音让我沉陷其中,于是 我决定把他们爬…...
链接投票二维码制作制作投票链接视频选举投票制作
关于微信投票,我们现在用的最多的就是小程序投票,今天的网络投票,在这里会教大家如何用“活动星投票”小程序来进行投票。我们现在要以“信赖挚友”为主题进行一次投票活动,我们可以在在微信小程序搜索,“活动星投票”…...
HTTP 协议
HTTP(hypertext transport Protocol);超文本传输协议,是浏览器与万维网服务器之间通信的规则。 规定了客户端与服务端之间互相发送内容的格式,客户端发给服务端的叫 请求协议,服务端返回给客户端的为 响应…...
公司新招了个人,一副毛头小子的样儿,哪想到是新一代卷王····
内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了“万物皆可卷”的程度。 在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是…...
TSDF学习记录
【唐宇迪】三维重建-TSDF通俗解读 人工智能入门教程 水泡动画模拟(Marching Cubes) - 算法小丑 - 博客园 (cnblogs.com) TSDF 流程分析 首先需要构建一大块空区域采用体素网格来存储该区域需要计算每个体素的TSDF值及其权重 原理简述 SDF值&#x…...
【Linux】孤儿进程
在Linux中,如果子进程运行时,父进程因为某些原因先行终止,就称该子进程为孤儿进程。 我们编写如下代码: 子进程一直在运行,父进程运行一段时间后自动终止。运行该程序观察现象: 最开始时,子进程…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
