一、概念:Java中的IO流技术主要用于传输数据。典型场景有:读写本地文件、上传、下载文件等。I:输入 O:输出 流:数据流
二、分类:
(按数据传输方向)
·输入流(input):【读取,从硬盘到内存】让数据进入程序中。
·输出流(output):【写入,从内存到硬盘】让数据离开应用程序。
(按数据种类)
·字节流:可以处理任意一种数据
·字符流:只能处理纯文本数据
三、FileWriter相关知识
1、FileWriter写数据的一般步骤
(1)导包 import Java.io.FileWriter;
(2)创建,构造方法
FileWriter fw = new FileWriter(“file01.txt”);
(3)使用,成员方法:
写数据 public void writer ( String str); 参数就是需要写到文件的字符串
关闭流 public void close(); 关闭、释放相关资源
public static void main (String[] args){
FileWriter fw = new FileWriter("file01.txt");
fw.writer("HelloWorld");//将HelloWorld写入文件
fw.writer("HelloWorld",ture);//在原输出文件的基础上追加写入
fw.close;
}
【注意事项】一定要调用close方法关闭
2、FileWriter写数据的覆盖与追加
(1)在使用FileWriter时,如果指定文件不存在,则会自动创建文件。
(2)在使用FileWriter时,如果指定文件存在,则会覆盖写入。
(3)如果不希望FileWriter在写入文件时覆盖写入,希望追加写入,那么需要使用方法:
public FileWriter(String name,boolean append);
3、FileWriter写数据的换行,如何实现?
(换行其实需要使用一种名为“换行符”的字符)
Windows:\r\n
macos:早期:\r 现在:\n
linux: \n
4、文本文件中其实就是数字(ASCⅡ表、Unicode表)
*FileWriter提供了一种利用数字写文件的重载形式:
public void writer(int X);(参数就是对应的数字)
5、FileWriter方法Writer的重载:
public void writer(int X);(参数就是对应的数字)
public void writer(String str);(写一串完整的字符串)
public void writer(String str,int offset,intcount);(写字符串的一部分)
public void writer(char[] array);(写完整的字符数组)
public void writer(char[] array,int offset,int count);(写数据数组的一部分)
public static void main(String[] args){
FileWriter fw = new FileWriter ("file01.txt");
fw.writer(65);//写入A
fw.writer("\n");
fw.writer("Helloworld\n",ture);//追加写入
fw.writer("Helloworld\n",2,3);//写入ell
char[] array = {"A","B","C","D"};
fw.writer(array);
fw.writer(array,2,2);
}
四、FileReader相关知识
1、FileReader读数据一般步骤
(1)导包 import Java.io.FileReader;
(2)创建,构造方法
FileReader fr = new FileReader(“file01.txt”);
(3)使用,成员方法:
写数据 public int read (); 读取下一个字符,得到对应ASCⅡ表、Unicode表值
关闭流 public void close(); 关闭、释放相关资源
【注】如果一个int变量确实是一个字符对应的ASCⅡ表、Unicode表值可以用格式将其转换成文字:(char) 变量名;
2、FileReader读取整个数组:
public int read(char[] buf);
→返回值是代表数组当中读取道德有效字符个数
public static void main(String[] args){
FileReader fr = new FileReader("file01.txt");
char[] buf = new char[2];
fr.read(buf);
String str = new String ("buf");
}
五、BufferedWriter
1、BufferedWriter 的缓冲原理
BufferedWriter 和FileWriter差不多,也是一种用来写文件的类,属于字符输出流。区别是BufferedWriter中包含一个长度为8192的char[]字符数组,当做缓冲区使用。
每次写数据是实际上都是在不断的向缓冲数组当中添加字符。如果缓冲数组满了,那么将统一的写到硬盘的文件中。如果还没写满,那就等待下一次写入。如果最终关闭流的时候,数据仍然没有写满,那么将已存在数组有效部分写入到文件中。
2、如何使用BufferedWriter?
(1)首先创建一个普通的FileWriter
(2)将这个普通的FileWriter包装成缓冲的BufferedWriter。(使用构造方法)
(3)后面BufferedWriter使用的方法后FileWriter基本一致。
3、构造方法
public BUfferedWriter (FileWriter fw);(参数是一个普通的FileWriter对象)
public static void main(String[] args){
FileWriter fw = new FileWriter ("file01.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.writer("read");
bw.close;
}
4、BufferedWriter额外提供的一种换行方法(不限操作系统,系统会根据操作系统选择写入换行符)
public void newLine();
public static void main(String[] args){
//FileWriter fw = new FileWriter ("file01.txt");
//BufferedWriter bw = new BufferedWriter(fw);
//bw.writer("read");
bw.newLine();
//bw.close;
}
六、BufferedReader
1、BufferedReader的缓冲原理
BufferedWriter 和FileWriter差不多,也是用来读取文件的一种字符输入流。区别是BufferedWriter 包含一个长度为8192的字符数组,当做缓冲区。当读取数据时一次性从硬盘中读取最多8192个字符,放在缓冲区中。在调用方法的时候只是从缓冲区中拿出字符进行使用。如果缓冲区中字符被取空,那么将自动再次读取8192个字符,放入缓冲区。
2、BufferedReader构造方法
public BUfferedReader (FileReader fr);(参数是一个普通的FileReader对象)
public static void main(String[] args){
FileReader fr= new FileReader("file01.txt");
BufferedReader br = new BufferedReader(fr);
/*
上两句也可按如下方式构造:
BufferedReader br = new BufferedReader(new FileReader("file01.txt"));
*/
int ch;
while ((ch = br.read())!=-1){
Systerm.out.println((char)ch);
}
}
3、BufferedReader的读取整行的方法
public String readLine();
br.readLine();