版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuming226/article/details/84309350
字符流是什么
字符流是可以直接读写字符的IO流。字符流读取字符,就要先读取到字节数据,然后转为字符,如果要写出字符,需要把字符转为字节在写出。
FileReader类
1、FileReader继承的类:
2、FileReader类的构造方法
3、FileReader读取文件数据输出到控制台
package zifu;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Demo1_FileReader {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("11.txt");
int b;
while ((b = fr.read()) != -1) {
System.out.print((char)b);
}
fr.close();
}
}
FileWriter类
1、FileWriter类继承的类
2、FileWriter类的构造方法
3、FileReader类写入数据到文件
package zifu;
import java.io.FileWriter;
import java.io.IOException;
public class Demo2_FileWriter {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("copy.txt");
fw.write("花不醉人人自醉,色不迷人人自迷!");
fw.close();
}
}
FileReader和FileWriter类的应用示例
package zifu;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo_FileReaderAndWriter {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("11.txt");
FileWriter fw = new FileWriter("copy.txt");
int b;
while ((b = fr.read()) != -1) {
fw.write(b);
fw.write(",你好帅!");
}
fr.close();
//Writer类中有一个2k的小缓冲区,如果不关流,就会将内容写到缓冲区里,关流会将缓冲区内容刷新,再关闭。
fw.close();
}
}
BufferedReader类和BufferedWriter类
带缓冲区的流中的特殊方法。
- readLine():BufferReader
- newLine():BufferWrier
- newLine()和\r\n的区别
- newLine()是跨平台的
- \r\n只支持windows系统。
package zifu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo4_Buffer {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("11.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("copy.txt"));
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
br.close();
bw.close();
}
}
文件拷贝
package zifu;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* 字符流也可以拷贝文件,但不推荐使用,因为读取时会把字节转为字符,写出时还要把字符转回字节。
* 程序需要读取一段文本,或者需要写出一段文本的时候可以使用字符流。读取的时候是按照字符的大小读取的,不会出现半个中文,写出的时候可以直接将字符串写出,不用转换为字节数组。
*
*
* 不可以拷贝非纯文本的文件,因为在读的时候会将字节转换为字符,在转换过程中,可能找不到对应的字符,就会用?代替,写出的时候会将字符转换成字节写出去。
* 如果是?,直接写出,这样写出之后的文件就乱了
* @author Administrator
*
*/
public class Demo3_Copy {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("11.txt");
FileWriter fw = new FileWriter("copy.txt");
char[] arr = new char[1024];
int len;
while ((len = fr.read(arr)) != -1) {
fw.write(arr,0,len);
}
fr.close();
fw.close();
}
}