Java-IO流

I/O 输入/输出 流(数据流动)

输入为读取;输出为写入
按照流动的方向:读数据(输入Input) 写数据(输出Output)
文件流,字符流,数据流,对象流,网络流。。。

文件
一种电脑的存储形式
File类----->与电脑上的文件或文件夹产生一一对应的映射关系
再java.io包中,是文件或目录路径名的抽象表现形式,与真实硬盘中的文件或文件夹不是一个东西
File是在内存中的一个对象<-- 映射–>硬盘上的文件或文件夹
File file = new File(“D:/test.txt”);
file.canRead(); //判断是否可读
file.canWrite(); //判断是否可写
file.isHidden(); //判断是否隐藏
file.isFile(); //判断当前file是否是一个文件
file.isDirectory(); //判断当前文件是否是一个文件夹
file.getAbsoluteFile(); //获取绝对路径
file.getName(); //获取文件名
file.createNewFile(); // 创建新文件
file.mkdir(); //创建新文件夹
file.getParent();
File parentFile = file.getParentFile();
file.list();
File[] listFiles = file.listFiles(); listFiles == null 是个文件, listFiles != null && listFiles.length != 0 是一个带子元素的文件夹

操作文件中的内容--------->通过流I/O的方式完成

文件流

按照读取或写入的单位(字节数)的大小来区分

字节型文件流(1字节)

FileInputStream

创建对象:1-参数可以是一个file类型的
2-参数可以是一个String类型的

一个字节一个字节读取,read() 返回字节的code码
利用数组读取,read(byte[] b) 返回有效元素的个数 读取内容放入数组中,再通过数组输出;此时应注意字节转换成字符串时String(b, 0, count),读取到的有效字节写入,否则容易出现最后文件末尾读取错误;

available() 流管道中有多少缓存的字节,在读取网络数据的时候可能会存在问题
skip(long count) 跳过多少字节开始读取
close()将流管道关闭,最好放在finally中,注意代码的健壮性,判断严谨

FileOutputStream

创建对象
参数可以是一个file类型
参数可以是一个String类型
write()写入 写入到流管道中,并非直接操作硬盘中的文件,而是操作file对象,file对象与文件有映射作用
write(byte[] b)写入一组数据
flush()刷新,建议必写,将管道中的字节推入文件中

如果出现两种流,在关闭时,建议使用两个异常处理进行关闭,防止其中一个出现异常未关闭成功影响另一个关闭;

字符型文件流(2字节–>1字符)

FileReader/FileWriter

继承 InputStreamReader/OutputStreamWriter
read()方法只能传int,char[]
write()方法可以传String类型,char[],int

缓冲流

再流管道中增加缓存的数据,提升性能
BufferedInputStream/BufferedOutputStream
BufferedReader/BufferedWriter

对象流

ObjectInputStreamObjectOutputStream
对象的序列化反序列化
将一个完整的对象,拆分成字节碎片,记录在文件中将一个文件中记录的对象,反过来组合成一个完整的对象
对象类需要实现Serializable需要给对象类提供一个序列化的版本号 private long serialVersionUID = 任意
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值