IO流:用完流记得关闭哦:close();
流的分类:
Java中的流,可以从不同的角度进行分类。
按照数据流的方向不同可以分为:输入流和输出流,读入程序,写出到文件
按照处理数据单位不同可以分为:字节流Stream读写八位二进制和字符流Reader/Writer
读写十六位二进制
按照实现功能不同可以分为:节点流和处理流
数据流的方向不同:
输入流:
读:read
intread():读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。
intread(byte[]b):将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。
intread(byte[] b, int off, int len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。
结构:
InputStream:所有输入流之字节流的父类,是一个抽象类,提供默认的read(),read(byte[] buf)...方法
1. ByteArrayInputStream(节点流): 字节数组输入流,从字节数组中读取数据。
2. FileInputStream(节点流) :从文件中读取数据,如果是一个文本文件,并且包含中文,建议用FileReader
3. PipedInputStream(节点流):多线程的环境中,线程通迅的输入流
4.ObjectInputStream(装饰流):读取序列化的java对象的流类,注:自定义的对象要实现Serializable接口才能被序列化,transient关键字(标识某个属性不被序列化), 序列化版本号serialVersionUID,为了保证在不同的java环境中,以及类的版本变化所带来的不能被正确反序列化时所带来的问题
5. SequenceInputStream(装饰流):将多个输入流,合并为一个输入流(它没有对应的输出流)
6. ZipInputStream(装饰流): 将压缩文件中的内容读取出来,压缩文件中的每一个文件,都对应一个ZipEntry对象
7. DataInputStream(装饰流):读取被DataOutputStrem写入的java基本数据类型的数据,写入的数据是根据基本数据类型所占用的字节数来决定的.String类型的数据,在前面会有2个字节来标识字符串的长度。
Reader:所有输入流之字符流的父类,是一个抽象类。
1. FileReader(节点流):读取文件,一般都读取文本文件。(能用记事本打开,并且能够正确的看到其内容的)
2. BufferedReader(装饰流):提供字符流的缓冲功能,提供了readLine()方法,可以读取一行文本
输入流优化:
输出流:写完流记得刷新缓存区flush();
写:write
voidwrite(int b) :往输出流中写入一个字节。
voidwrite(byte[] b) :往输出流中写入数组b中的所有字节。
voidwrite(byte[] b, int off, int len) :往输出流中写入数组b中从偏移量off开始的len个字节的数据。
结构:
OutputStream:所有输出流之字节流的父类,是一个抽象类,提供默认的write(),write(byte[] buf)...方法
1. ByteArrayOutputStream(节点流): 字节数组输出流,向字节数组中写入数据。
2.FileOutputStream(节点流) :将数据写入文件中,如果是一个文本文件,并且包含中文,建议用FileWriter
3.PipedOutputStream(节点流):多线程的环境中,线程通迅的输出流
4.ObjectOutputStream(装饰流):将对象写入流中。
5.ZipOutputStream(装饰流): 将ZipEntry写入压缩文件中。
6.DataOutputStream(装饰流):。将基本数据类型的数据写入流中。
Writer:所有输出流之字符流的父类,是一个抽象类。
1. FileWriter(节点流):写入文件。
2. BufferedWriter(装饰流):提供字符流的缓冲功能.
输出流优化:
数据单位不同:转化流:InputStreamReader/OutputStreamWriter,把字节转化成字符。
字节流:
输入:
输出:
字符流:
输入:
输出:
File类:
1.一个File类对象,表示磁盘上的文件或目录本身信息的类,而不是文件的内容;
2. File类提供了与平台无关的方法对磁盘上的文件或目录进行操作(创建、删除、重命名).
路径:两个\\(反斜杠)等于一个/正斜杠,一般情况下用正斜杠
常用方法:
1.创建文件: new File(pathName); createNewFile();
2.创建目录:mkdir():创建路径下的目录 mkdirs():创建路径下的目录,包含所有必需但不存在的父目录。
3.删除文件:delete();
3.读文件:
FileReader fr = new FileReader(str1);
BufferedReader br = new BufferedReader(fr);
String str2 = br.readLine(); //逐行读
while (str2 != null) {
str3
str2 = br.readLine();
}
br.close();
fr.close();
4.写文件:
FileWriter fw = new FileWriter(str1);
fw.write(str2);
fw.flush();
fw.close();
5.isDirectory和isFile():根据其结果判断是否为目录或文件,如果返回结果为false并不代表不是目录或不是文件,有可能该路径代表的文件还不存在。
6.遍历文件:listFiles(); (抽象路径)目录下的所有文件(文件夹和文件)
网友评论