I/O流 基础知识点
//输出流(写数据) FileWriter
第一步:创建输出流对象
* FileWriter fw = new FileWriter("d:\\a.txt");
* 抛出IOException异常
第二步:写一个字符串数据
* fw.write("IO流你好");
第三步:刷新内存缓冲区
* fw.flush();
第四步:释放资源
* fw.close();
FileWriter其它写方法:
* void write(String str):写一个字符串数据
* void write(String str,int index,int len):写一个字符串中的一部分数据,从索引index开始,写入len长度
* void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
* void write(char[] chs):写一个字符数组数据
* void write(char[] chs,int index,int len):写一个字符数组的一部分数据,从索引index开始,写入len长度
如何实现数据的换行
* \n可以实现换行,但是windows系统自带的记事本打开并没有换行,这是为什么呢?因为windows识别的换行不是\n,而是\r\n
文本末尾追加:
* FileWriter fw = new FileWriter("c.txt",true); //表示追加写入,默认是false
close()和flush()方法的区别:
* flush():刷新缓冲区。流对象还可以继续使用。
* close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
//输入流(读数据) FileReader
//1.读数据一次读取一个字符
第一步:创建输出流对象
* FileReader fr = new FileReader("fr.txt");
第二步:读一个字符数据(返回int整数)
* int ch = fr.read();
* 注意:如果读取数据的返回值是 -1 的时候,就说明没有数据了
第三步:int整型强转char
* System.out.print((char)ch);
第四步:释放资源
* fw.close();
//标准代码:
FileReader fr = new FileReader("fr.txt");
int ch;
while((ch=fr.read())!=-1) {
System.out.print((char)ch);
}
fr.close();
//2.读数据一次读取一个字符数组
第一步:创建输出流对象
* FileReader fr = new FileReader("fr.txt");
第二步:创建字符数组
* char[] chs = new char[1024];
* 注意:new char[1024];//这里长度是1024及其整数倍,因为字符的单位是1024
第三步:读一个字符数组(返回int整数)
* int ch = fr.read(chs);
* 注意:如果读取数据的返回值是 -1 的时候,就说明没有数据了
第四步:字符数组char[]整型强转String(输入的时候不需要加 ln)
* System.out.print(new String(chs,0,len));
System.out.print(chs,0,len);
*
第五步:释放资源
* fw.close();
//标准代码:
FileReader fr = new FileReader("fr.txt");
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
System.out.print(new String(chs,0,len));
//System.out.print(chs,0,len);
}
fr.close();
//缓输出冲流(高效写数据) FBufferedWriter
第一步:创建输出缓冲流对象
* BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
* 抛出IOException异常
第二步:写一个字符串数据
* bw.write("hello");
第三步:刷新内存缓冲区
* bw.flush()
第四步:释放资源
* bw.close();
//缓输入冲流(高效读数据) BufferedReader
//1.读数据一次读取一个字符
创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
其他
同 FileReader
//2.读数据一次读取一个字符数组
创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
其他
同 FileReader
//缓冲流的特有方法使用(重点)
第一步:创建输出流对象
* BufferedReader br = new BufferedReader(new FileReader("br.txt"));
第二步:读一个行字符数据(返回String)
* String line = br.readLine()
* 注意:1)不读取换行符; 2)如果读取数据的返回值是 null 的时候,就说明没有数据了。
第三步:输出一行(输入的时候需要加 ln)
* System.out.println(line);
第四步:释放资源
* br.close();
缓冲流的特殊功能:
BufferedWriter
* void newLine():写一个换行符,这个换行符由系统决定。
不同的操作系统newLine()方法使用的换行符不同 windows:\r\n
linux:\n
mac:\r
* BufferedReader
* String readLine():一次读取一行数据,但是不读取换行符
//标准代码:
BufferedReader br = new BufferedReader(new FileReader("br.txt"));
String line;
while((line=br.readLine())!=null) {
System.out.println(line);
}
br.close();
//复制文本5种方式 (读写数据):
注意:创建对象、导包等操作略
A:利用基本流一次读写一个字符
//标准代码:
int ch;
while((ch=fr.read())!=-1) {
fw.write(ch);
}
fw.close();
fr.close();
B:利用基本流一次读写一个字符数组
//标准代码:
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
fw.write(chs,0,len);
}
fw.close();
fr.close();
C:利用缓冲流一次读写一个字符
//标准代码:
int ch;
while((ch=br.read())!=-1) {
bw.write(ch);
}
bw.close();
br.close();
D:利用缓冲流一次读写一个字符数组
//标准代码:
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
bw.write(chs,0,len);
}
bw.close();
br.close();
E:利用缓冲流的特有方法一次读写一个字符串(重点)
//标准代码:
String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();