FileWriter和FileReader是用来实现将字符读写到文件的IO类。
1.FileWriter
是用来方便的将字符数据写入文件的类,这个类的构造函数假设默认的字符编码方式和缓冲区大小的可被接受的,如果要改变指定编码和缓冲区大小可以用FileOutputStream来构造一个OutputStreamWriter来实现。
当文件没有找到时,一般是可以自动创建文件,但这也和平台有关,有的平台不允许创建文件。FileWriter是用来写字符流的,如果要写字节流数据,请使用FileOutputStream。主要的构造函数有:
FileWriter(File file)
用File对象来构造FileWriter,写数据时,从文件开头开始写起,会覆盖以前的数据
FileWriter(File file, boolean append)
还是用File对象构造,如果第二个参数为true的话,表示以追加的方式写数据,从文件尾部开始写起
FileWriter(FileDescriptor fd)
用文件描述符来构造FileWriter
FileWriter(FileDescriptor fd, boolean append)
用文件描述符来构造,第二个参数为true的话,表示以追加的形式写入数据
FileWriter(String fileName)
用文件的路径名来构造FileWriter
FileWriter(String fileName,boolean append)
用文件路径名来构造FileWriter,第二个参数为true的话,表示以追加的形式写入文件
大部分方法集成于Writer,请点击这里查看;其他主要方法有:
String getEncoding()
查看编码方式,返回时编码范式
void write(char[] cbuf, int off, int len)
将字符数组的一部分写入到流中。将cbuf[off],cbuf[off+1],…,cbuf[off+len-1]部分字符
写入到流中,但能不能写len个字符取决于cbuf中是否有那么多
2.FileReader
用来方便的从文件中读出字符的类,默认编码和默认缓冲区大小假设是可以接受的。如果要改变默认编码和默认缓冲区大小可以用FileInputStream来构造InputStreamReader来实现。FileReader意味着是用来读字符的流,要实现读取字节流,请考虑使用FileInputStream。
构造函数有:
FileReader(File file)
用File对象来构造FileReader
FileReader(FileDescriptor fd)
用文件描述符构造FileReader
FileReader(String fileName)
用文件的路径名来构造FileReader
主要的函数大多集成于Reader类,请点击这里查看。其他主要的函数有:
public String getEncoding()
返回这个流使用的编码方式
3.例子
实现向文件中写入字符串,写入中文,写入数字等。注意Reader和Writer是用来的字符进行写入的,如果直接将int型数据作为参数的话,是不会写入数字的,而是现将数字按照ascll码表转换为相应的字符,然后再写入。要想实现数字和中文的写入,必须要用String为参数的Write。
FileWriter写入例子:
import java.io.FileWriter;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) throws IOException{
String filePath = "G:\\test2.txt";
FileWriter fw = new FileWriter(filePath);
String str="sdndanudn中华人民共和国主席,daduca1266d8523189588";
int type = 103658;
char ch = 'A';
fw.write(str);
fw.write('\n');
fw.write(type+""); //若直接用type作为参数,写入的是type按ascll码对应的字符
fw.write('\n'); //换行符也可以直接写入
fw.write(ch); //字符可以直接写入
fw.flush();
fw.close();
}
}
FileReader例子代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class FileTest {
public static void main(String[] args) throws IOException{
String filePath = "G:\\test2.txt"; //文件路径
FileReader fd = new FileReader(filePath); //构造FileReader
char[] chs = new char[1024];
while(fd.read(chs) != -1){ //每次读1024个字符
System.out.print(chs);
}
}
}
运行结果:
写入文件
文件读出