java核心技术之IO流(三)FileReader和FileWriter
最后更新于:2022-04-01 09:58:44
### 简单的说明
从字符类型(char)的文件中读取和写入数据,我们要使用FileWriter和FileReader类来实现。
### FileWriter和FileReader
### FileWriter类
构造方法:
FileWriter(String filename)
FileWriter(File file)
关键方法:
write(int oneChar)
write(char[] buffer, int offset, int count)
### FileReader类
构造方法:
FileReader(String filename)
FileReader(File file)
关键方法:
read()
read(char[] buffer, int offset, int count)
### 一个测试的Demo
定义三个方法:
(1)testFileReader方法—读取文件内容
FileReader的使用方法:
~~~
//1.创建一个输入字符文件
//2.创建一个FileReader对象
//3.调用read方法,读取内容数据
//4. 关闭对应的流
~~~
(2)testFileWriter方法—-往文件写内容
FileWriter的使用方法:
~~~
//1.创建一个File文件
//2.创建一个FileWriter对象
//3.调用write方法写入数据
//4.关闭对应的输出流
~~~
(3)copyByFileReaderFileWriter方法—-复制文件的方法
~~~
//1.定义输入和输出的文件
//2.定义输入流和输出流的对象
//3.执行复制操作
//4.关闭对应的流,先关输出流,后关输入流
~~~
~~~
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileReaderFileWriter {
//同时使用FileReader和FileWriter,实现二个文本文件的复制
public static void copyByFileReaderFileWriter(String src,String des){
//2.定义二个字符流,输入流,输出流
FileReader fr = null;
FileWriter fw = null;
try {
//1.定义二个文件,一个输入,一个输出
File fin = new File(src);
File fout = new File(des);
fr = new FileReader(fin);
fw = new FileWriter(fout);
//3.复制操作
char[] c = new char[20];
int len;
while((len = fr.read(c)) != -1){
fw.write(c, 0, len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//4. 关闭对应的流,先关输出流,再关输入流
if(fw != null){
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fr != null){
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//FileWriter使用样例---处理字符
public static void testFileWriter(){
//2.定义一个FileWriter对象
FileWriter fw = null;
try {
//1.定义一个输出字符文件
File f1 =new File("hello_FileWriter.txt");
fw = new FileWriter(f1);
//3.输出操作
String str = "我是中国人,我爱打dota,还爱搞机";
fw.write(str);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
//4.关闭对应的流
if(fw != null){
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//FileReader使用样例---处理字符
public static void testFileReader(){
//2.定义一个FileReader
FileReader fr = null;
try {
//1.定义一个输入字符文件
File f1 =new File("hello.txt");
fr = new FileReader(f1);
//3.读入操作
char[] c = new char[10];
int len;
while((len = fr.read(c)) != -1){
System.out.print(new String(c,0,len));
}
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//4.关闭对应的流
if(fr != null){
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
~~~
调用:
~~~
//FileReader使用样例---处理字符
FileReaderFileWriter.testFileReader();
//FileWriter使用样例---处理字符
FileReaderFileWriter.testFileWriter();
//同时使用FileReader和FileWriter,实现二个文本文件的复制
FileReaderFileWriter.copyByFileReaderFileWriter("hello_FileWriter.txt", "hello_FileWriter_copy.txt");
~~~
参考资料:
1.FileWriter api文档
android_sdk_docs_offline/reference/java/io/FileWriter.html
2.FileReader文档
android_sdk_docs_offline/reference/java/io/FileReader.html
3.FileWriter与FileReader视频
[http://edu.csdn.net/course/detail/805/10966?auto_start=1](http://edu.csdn.net/course/detail/805/10966?auto_start=1)