1、什么是流?
流是对数据传输的总称或抽象。即数据在两设备间的传输称为流。本质就是数据传输
2、io流的分类
根据数据流的方向:输入流和输出流
根据处理数据单位:字节流和字符流
java IO流结构图:

(1)输入流和输出流
输入和输出都是从程序的角度来说的, 输入流是指程序从数据源中读取数据。只进行读操作;输出流是指将数据从程序中写到指定的文件中。
(2)字节流和字符流
字节流:一次读入或者读出的是8位二进制
字符流:一次读入或者读出的是16位二进制(中文对应的字节数是两个,在utf-8码表是3个字节,先查指定编码表,
然后返回查到字符)
字节流和字符流的原理是相同的,只不过处理的单位不同而已。后缀是Stream是字节流,后缀是Reader,Writer是字符流
字节流和字符流区别:
字节流可以处理所有的类型数据,如:图片,MP3,avi视频文件,而字符流只能处理字符数据。只要
处理纯文本数据,优先考虑使用字符流,除此之外都用字节流
3、java中io常用的流:
jdk提供的流继承了四大类(抽象类非接口):InputStream,OutputStream,Reader,Writer
(1)对文件进行操作:FileInputStream(字节输入流),FileOutputStream(字节输出流),FileReader(字符输入流),FileWriter(字符输出流)
(2)对管道进行操作:PipedInputStream(字节输入流),PipedOutStream(字节输出流),PipedReader(字符输入流),PipedWriter(字符输出流)
PipedInputStream的一个实例要和PipedOutputStream的一个实例共同使用,共同完成管道的读取写入操作。主要用于线程操作。
(3)字节/字符数组:ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter是在内存中开辟了一个字节或字符数组。
(4)Buffered缓冲流::BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,是带缓冲区的处理流。
缓冲区的作用的主要目的是:避免每次和硬盘打交道,能够减少对硬盘的损伤,提高数据访问的效率。
BufferedReader的封装是为了使用readLine()方法
(5)转化流:InputStreamReader/OutputStreamWriter,把字节转化成字符。
(6)数据流:DataInputStream,DataOutputStream。
数据流可以直接输出float类型或long类型,提高了数据读写的效率。
打印流:printStream,printWriter,一般是打印到控制台,可以进行控制打印的地方。
对象流:ObjectInputStream,ObjectOutputStream,把封装的对象直接输出,而不是一个个在转换成字符串再输出。
序列化流:SequenceInputStream。
对象序列化:把对象直接转换成二进制,写入介质中。
使用对象流需要实现Serializable接口,否则会报错。而若用transient关键字修饰成员变量,不写入该成员变量,若是引用类型的成员变量为null,值类型的成员变量为0.
4.Java中的目录:
创建目录:
File类中有两个方法可以用来创建文件夹:
mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
mkdirs()方法创建一个文件夹和它的所有父文件夹。
下面的例子创建文本文档,文件夹:

这篇博客总结了Java中的IO流,包括流的概念、分类,以及字节流和字符流的区别。内容涉及四大类流:InputStream、OutputStream、Reader、Writer,详细介绍了FileInputStream、FileOutputStream、FileReader、FileWriter等常见流的用途,还提到了缓冲流、转化流、数据流等特殊流的使用,并讲解了Java中创建目录的方法。
5948

被折叠的 条评论
为什么被折叠?



