IO流(OutputStream、OutputStrem、Reader、Writer)、Properties

IO流的分类和功能

       按照方向可以分为:输入流(读)、输出流(写)

       按照类型可以分为:字节类(任何文件)、字符流(纯文本文件)

       对应到代码当中:

              字节输入流:InputStream         FileInputStream

              字节输出流:OutputStream      FileOutputStream

              字符输入流:Reader                 FileReader

              字符输出流:Writer                  FileWriter

 

字节输出流写出数据到文件

       OutputStream out = new FileOutputStream("文件路径");

       OutputStream常用的方法:

              public void write(int b):写单个字节

              public void write(byte[] buf):写整个字节数组

              public void write(byte[] buf, int offset, int length):写字节数组的一部分

              public voic close():关闭流

       FileOutputStream构造方法:

              public FileOutputStream(String filename):参数代表文件路径

              public FileOutputStream(String filename, boolean append):第二个参数代表是否追加写。

              public FileOutputStream(File file):参数代表文件对象

              public FileOutputStream(File file, boolean append)::第二个参数代表是否追加写。

 

字节输入流读取数据到程序

       InputStream i = new FileInputStream("文件路径");

       InputStream常用的方法:

              public int read():读取单个字节

              public int read(byte[] buf):读取字节数组,返回有效个数。

              public void close():关闭流

       FileInputStream构造方法:

              public FileInputStream(String filename):参数代表文件路径

              public FileInputStream(File file):参数代表文件对象

 

读取数据read(byte[])方法的原理

       byte[] buf = new byte[2];

       int len;

       while ((len = in.read(buf)) != -1) {

              // 有效部分

       }

 

字节流完成文件的复制

       1. 单个字节的方式:大约86秒钟

       2. 字节数组的方式:大约0.3秒钟

 

 FileWriter写数据到文件

       Writer writer = new FileWriter("文件路径")、

     

FileWriter中关闭和刷新方法的区别

       1. 刷新是flush方法:立刻清空缓冲区,将数据交给操作系统。

       2. 关闭是close方法:内部其实已经包含了一个flush动作,额外再关闭。

       注意:flush方法调用之后,仍然还可以继续这个流;但是close方法一旦调用关闭了流,这个流不能再继续了。

 

FileWriter写数据的5个方法

Writer当中的常用方法:

              public void write(int ch):写单个字符

              public void write(char[] buf):写整个字符数组

              public void write(char[] buf, int offset, int length):写字符数组的一部分

              public void write(String str):写整个字符串

              public void write(String str, int offset, int length):写字符串的一部分

              public voic close():关闭流

       FileWriter构造方法:

              public FileWriter(…) // 和刚才4个一样

 

FileWriter写数据实现换行和追加写

       Windows的换行是:\r\n(这是两个字符)

       Linux/macOS的换行是:\n

 

FileReader读数据

       int ch;

       while ((ch = reader.read()) != -1) {

              // …

       }

 

FileReader读数据一次一个字符数组

       char[] buf = new char[size];

       int len;

       while ((len = reader.read(buf)) != -1) {

              // 字符数组的有效部分

       }

 

Properties的load方法加载文件中配置信息

       Properties props = new Properties();

       FileReader fr = new FileReader("配置文件的路径");

       props.load(fr);

       fr.close();

       // props中的内容了,基本和Map一样。

发表评论