java.io.Reader;
java.io.FileStreamReadr; 转换流(字节输入流—>字符输入流 )
java.io.FileReader;文件字符输入流
注意:字节流读,因为一次只能读一个字节,用不好的话可能刚好读到一个中文字符的一半,会显示乱码,而字符流最小单位是两个字节,所以不会出现这种问题
import java.io.*;
public class FileReaderTest {
public static void main(String[] args) throws Exception{
//创建文件字符输入流
FileReader f1 = new FileReader("D:\\eclispe\\Io流\\src\\fileReader\\FileReaderTest.java");
//开始读
char[] chars = new char[512]; //1KB 一个char是两个字节
int temp=0;
while((temp = f1.read(chars))!=-1) {
//将char数组有效部分转换为字符串,有效部分很关键
System.out.println(new String(chars,0,temp));
}
}
}
java.io.Writer;
java.io.FileStreamWriter; 转换流(字节输出流—>字符输出流 )
java.io.FileWriter;文件字符输出流
使用FileWriter来复制
注意:FileWriterwrite可以直接写如字符串
import java.io.*;
public class FileWriterTest {
public static void main(String[] args) throws Exception{
FileReader n1 = new FileReader("D:\\eclispe\\Io流\\src\\fileReader\\FileReaderTest.java");
FileWriter n2 = new FileWriter("f:\\file.docx");//覆盖
FileWriter n2 = new FileWriter("f:\\file.docx",true);//追加
char[] chars = new char[512];//一次读取1kb
int temp = 0;
while((temp = n1.read(chars))!=-1) {
n2.write(chars,0,temp);
}
n2.flush();
n1.close();
n2.close();
}
}