I/O流笔记

作者:@冰山醉酒
本文为作者原创,转载请注明出处:https://www.cnblogs.com/douFrank/p/16117810.html


1|0I/O流

参考博客:java IO流详解 - 时光孤岛 - 博客园 (cnblogs.com)

概念:内存与存储设备之间传输数据的通道

分类:按单位:

字节流:以字节为单位,可以读写所有数据

字符流:以字符为单位,智能读写文本数据

按功能:

节点流:具有实际传输数据的读写功能

过滤流:在节点流的基础之上增强功能

字节流的父类(抽象类):

InputStream是从硬盘读取到内存(read)

OutputStream是从内存写入到硬盘(write)

2|0字节流

FileInputStream:

public int read(byte[] b)//从流中读取多个字节,将读到的内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1。

FileOutputStream:

public void write(byte[] b)//一次写入多个字节,将b数组中所有字节,写入输出流。

3|0字节缓冲流

BufferedInputStream与BufferedOutputStream

作用:提高IO效率,减少访问磁盘的次数;

数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可直接close。

4|0对象流

ObjectOutputStream/ObjectInputStream

  1. 增强了缓冲区功能

  2. 增强了读写8中基本数据类型和字符串的功能

  3. 增强了读写对象的功能

使用流传输对象的过程称为:序列化、反序列化

5|0字符流

FileReader:

public int read(char[] c)//从流中读取多个字符,将独到的内容存入c数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1

FileWriter:

public void write(String str)//一次写入多个字符,将b数组所有字符,写入输出流。

6|0字符缓冲流

BufferedReader与BufferedWriter

高效读写,支持输入换行符,可一次写一行、读一行

7|0打印流

PrintWriter

8|0转换流

桥转换流:InputStreamReader与OutputStreamWriter

可将字节流转换为字符流

可是之字符的编码方法

9|0File类

概念:代表物理盘中的一个文件或文件夹

 

 

10|0FileFilter接口

public intweface FileFilter{ boolean accept(File pathname) }

当调用File类中的listFiles()方法时,支持传入FileFilter接口,接口实现类,对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中

11|0Properties

属性集合

特点:1. 存储属性名和属性值

  1. 属性名和属性值都是字符串类型

  2. 没有泛型

  3. 和流有关

12|0总结

 
1 byte[] buf = new byte[1024]; 2 int count1 = 0; 3 while((count1=fis.read(buf))!=-1){ 4 System.out.println(new String(buf,0,count1)); 5 } 6 //疑问? 7 // 参考博客:https://blog.csdn.net/zzuwlan_high/article/details/78553193 8 9 /* 10 * 引用API文档:“public int read(byte[] b) throws IOException: 11 * 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。“ 12 * 注意“阻塞”二字,fis执行read时,不会每读一个字节就对count1赋值,所以while循环就被一直堵在判断语句中, 13 * 直到buf被赋满出现异常,读取的阻塞释放,count1终于被赋了一个值1024,接下来就执行循环体的打印。 14 * buf第一次塞满时,文件被读到的地方会有一个记录,所以当循环体执行完后,fis从上次循环结束的记录 15 * 向下读文件,又把while循环阻塞在判断语句,直到读完最后一个字节,读取阻塞再次被释放,这次count1被赋值, 16 * 该值为这次fis读到的字节数。然后,执行循环体打印。然后,fis再次尝试读取文件,这时候已经没有字节可读, 17 * 故返回-1赋给count1,循环体不再执行,循环结束。 18 * */

 

 


__EOF__

本文作者冰山醉酒
本文链接https://www.cnblogs.com/douFrank/p/16117810.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   冰山醉酒  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示