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一样。
Last modification:July 29th, 2019 at 05:29 pm