FileReader和FileWriter类是用来读取/写入字符文件的便捷类。
使用FileReader、FileWriter 可以实现文本文件的复制。
对于非文本文件(视频文件、音频文件、图片),只能使用字节流!
字符输入流(FileReader)
1)字节流和字符流整体上操作得步骤一样,会了字节流得操作,学字符流也就轻而易举了。
2)使用FileReader和FileWriter可以实现文本文件得复制。
3)对于非文本文件(图片,视频,音频)只能使用字节流,而 文本文件就可以使用FileReader和FileWriter。
4)FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据。
FileReader构造方法
主要方法:
int read(); // 读取单个字符。返回作为整数读取的字符,如果已达到流末尾,则返回 -1。
int read(char []cbuf);//将字符读入数组。返回读取的字符数。如果已经到达尾部,则返回-1。
void close();//关闭此流对象。释放与之关联的所有资源。
代码解释
package com.ghl.demo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileRead {
public static void main(String args[]) {
try {
File file = new File("Hello1.txt");
FileReader reader = new FileReader(file);
char[] ch = new char[5];
int len;
while((len=reader.read(ch)) != -1) {
for (char c : ch) {
System.out.print(c); //输出结果qwertyuiopasdfghjkfg
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
}
}
}
字符输出流(FileWriter)
1)public class FileWriter extends OutputStreamWriter:用来写入字符文件的便捷类。
2)FileWriter 用于写入字符流,要写入原始字节流,使用 FileOutputStream。
构造方法
主要方法
void write(String str);//写入字符串。当执行完此方法后,字符数据还并没有写入到目的文件中去。此时字符数据会保存在缓冲区中,若想使数据保存到目的文件中去,则需要适应刷新缓冲的的方法flush();
viod flush(); //刷新该流中的缓冲。将缓冲区中的字符数据保存到目的文件中去。
viod close(); //关闭此流。在关闭前会先刷新此流的缓冲区。
操作步骤
1)创建一个可以往文件中写入字符数据的字符流输出流对象 FileWriter
2)创建时必须明确文件的目的地,如果文件不存在,就会自动创建。如果文件存在,则会覆盖。
3)当路径错误时会抛异常
4)当在创建时加入true参数,会实现对文件的续写,使用false则会实现对文件的覆盖。
FileWriter fw = new FileWriter(“F:\Java\demo.txt”,true);
5)调用该对象的write方法,向文件写入字符
代码解释
package com.ghl.demo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import org.junit.Test;
public class FileWrite {
@Test
public void TestFileWrite() {
FileReader reader = null;
FileWriter write = null;
try {
File src =new File("Hello1.txt");//这个是输入流对应的文件 一定要存在 否则抛出异常
reader=new FileReader(src);
File desc=new File("Hello2.txt");//这个是输出流对应得文件 可以不存在 自动创建
write=new FileWriter(desc);
char[] ch=new char[20];
int len;
while((len=reader.read(ch))!=-1) {
write.write(ch, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
write.close();
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}