文件字符输入输出流
1.目的
文件字节的输入输出流是以字节为单位进行读写数据,不能很好的操作Unicode字符,而如果一个汉字占两个字节去使用字节输入输出流就要进行转码操作,所以则为了方便对字符进行操作而去使用FileReader,FileWrite字符流。
2.构造方法
其构造方法于字节输入输出流无异,可看上一篇
FileReader(String filename);
FileWrite(String filename,boolean append);等
import java.io.File;
import java.io.*;
public class wenjian_read_write {
public static void main(String[] args) throws Exception {
char[] c = new char[1];
FileReader in =new FileReader(("hello.txt"));//读取文件
FileWriter out = new FileWriter("world.txt",false);//写入文件第二个属性为boolean值,为true会从文件末尾开始写入数据
//false则会刷新文件,把之前的覆盖掉
int n ;//定义停止符
while((n=in.read(c))!=-1){//把读取的文件字符写入字符数组
out.write(c,0,n);
}
out.flush();//刷新缓冲区,将当前缓冲区的内容写入到目的地
out.close();
}
}
缓冲流
目的:缓冲流增强了读写文件的能力,例如可以通过缓冲流的readLine()方法去读取一行文本和通过newLine()方法去对文件写入回行符.
1.BufferedReader和BufferedWriter构造对象主要是对Reader和Writer传递过来的子类对象(FileReader和FileWriter)进行操作从而创建出BufferedReader和BufferedWriter对象
import java.io.*;
public class wenjian_buffered {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File read = new File("hello.txt");
File write = new File("world.txt");
Writer out = new FileWriter(write);
Reader in = new FileReader(read);
BufferedWriter bw = new BufferedWriter(out);
BufferedReader br = new BufferedReader(in);
String n;
while((n=br.readLine())!=null){//readLine方法的值为string类型
System.out.println(n);
bw.write(n);
bw.newLine();//BufferedWriter的向文件写入回行符的方法
}
bw.flush();
bw.close();
}
}