字符流
它是按照字符为单位进行读和写,一般适用于传输文本文件
1.字符输入流(FileReader)
顶级父类:java.io.Reader
按照读取的数据源类型不同,分为若干个子类
最常用的读取文件:FileReader
常用构造器:
常用的读取方法:
案例:
import java.io.FileReader;
public class TestFileReader {
public static void main(String[] args) throws Exception {
// 1创建字符输入流对象
FileReader fr=new FileReader("C:\\Users\\Administrator\\Desktop\\1.txt");
一个一个字符读取数据
// int i=fr.read();
// System.out.println((char)i);
有多少读多少
// int i=fr.read();
// while(i!=-1) {
// System.out.print((char)i);
// i=fr.read();
// }
// char[] c=new char[10];
// int i=fr.read(c);
// while(i!=-1) {
// System.out.print(new String(c,0,i));
// i=fr.read(c);
// }
char[] c=new char[10];
int i=fr.read(c,1,7);
while(i!=-1) {
System.out.print(new String(c,1,i));
i=fr.read(c,1,7);
}
3、关闭流
fr.close();
}
}
2.字符输出流(FileWriter)
顶级父类: java.io.Write
按照写入的目的端类型不同,分为若干子类
最常用的写入文件:FileWrite
常用的构造器:
常用的读取和写入方法:
案例:
import java.io.FileWriter;
public class TestFileWriter {
public static void main(String[] args) throws Exception {
1创建一个字符输出流,负责写
FileWriter fw=new FileWriter("C:\\Users\\Administrator\\Desktop\\2.txt");
2写
fw.write('a');
fw.write('我');
char[] c="我爱祖国".toCharArray();
fw.write(c);
char[] c="我爱祖国".toCharArray();
fw.write(c,1,3);
fw.write("我爱祖国");
fw.write("我爱祖国",1,3);
3关闭流
fw.close();
}
实例:文件拷贝
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFile {
public static void copy(String source,String target) throws IOException {
// 1创建流
FileReader fr=new FileReader(source);
FileWriter fw=new FileWriter(target);
// 2读写
char[] c=new char[1024];
int i=fr.read(c);
while(i!=-1) {
fw.write(c, 0, i);
fw.flush();//刷新,强制写
i=fr.read(c);
}
// 3关闭流
fw.close();//先刷新,再关闭
fr.close();
}
public static void main(String[] args) {
try {
copy("C:\\Users\\Administrator\\Desktop\\1.txt","C:\\Users\\Administrator\\Desktop\\2.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}