基础知识

IO流

2017-03-04  本文已影响5人  Suavitygogo

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(); (抽象路径)目录下的所有文件(文件夹和文件)

上一篇 下一篇

猜你喜欢

热点阅读