一、O流的概述和分类
1.概述:
IO流:可以从文件中读取数据,也可以把数据存储到文件中。
常见应用:文件复制(U盘拷贝内容)、上传内容(微信图片、QQ空间图片)、下载文件(迅雷下载)。
2.分类:输入流(从文件中读取数据到Java程序)和输出流(从Java程序中将数据写入文件)
二、FileWriter类(输出流类,往文件中写数据)
FileWriter fw = new FileWriter("d:\\a.txt"); //创建输出流对象
fw.write("IO流你好"); //调用输出流对象的写数据方法,写一个字符串数据
fw.flush(); //数据并没有直接写到内存中,而是写到了内存缓冲区,经过flush()方法进行刷新后即可
fw.close(); //释放资源,通知系统释放和该文件相关的资源
//while(true){} 用于测试释放资源,若不执行close(),此时若程序不结束,则该文件一直被占用,执行close()函数后,则资源释放,文件将不再被占用
创建输出流对象的做了哪些事情:A:调用系统资源创建了一个文件;B:创建输出流对象;C:把输出流对象指向该文件。
路径:相对路径,即相对于当前项目而言的根目录,若创建流对象时不指定;绝对路径,在计算机中的路径。
close()方法与flush()方法的区别:flush()方法只是刷新缓冲区,流对象还可以继续使用;而close()方法是在释放资源前刷新缓冲区,资源释放后,流对象关闭,不可以再用。
FileWriter类写数据的5种方法:
1): void write(String str):写一个字符串数据;
2): void write(String str, int index, int len):写一个字符串中的一部分数据(从索引index开始,长度为len);
3): void write(int ch):写一个字符数据,这里写int类型的好处是即可以写char类型的数据,也可以写char类型对应的int型数据,如传递的参数可以是’a’,也可以是97,最后的输出都为a;
4): void write(char[] chs):写一个字符数组数据;
5): void write(char[] chs, int index, int len):写一个字符数组的一部分数据,从索引index开始写,长度为len。
FileWriter类写入时换行和追加写入:
1)换行:Java虚拟机中,\n可以实现换行,但是在操作系统中的换行识别符号不一致;
在Windows系统中:换行符为\r\n
在Linux系统中:换行符为\n
在MAC系统中:换行符为\r
for(int i = 0; i < 10; i++){
fw.write("hello"+i);
fw.write("\r\n");
}
2)追加:FileWriter的构造方法:FileWriter(String filename, Boolean append)
当append为true时,表示追加,为false或者只有filename一个参数,则代表决绝追加。
FileWriter fw = new FileWriter(“c.txt”, true); //表示追加
三、FileReader类(输入流类,往程序中读取数据)
通过一次读写一个字符:
注意:调用读数据方法,每次执行读取一个字符,并且文本中的空格和换行符也能被读取。
FileReader fr = new FileReader("fw.txt");
int ch;
while((ch = fr.read()) != -1){
//如果读到ch等于-1,则表示读到结尾了,跳出循环
System.out.print((char)ch); //不用执行换行打印,ch中也会读到换行符,可以输出对应格式,这里读取的是字