字符流仅能对文本文件进行操作
FileReader类:
FileReader(File file) 根据给定的File对象创建FileReader对象
File f = new File("c.txt");
FileReader fr = new FileReader(f);
FileReader(String fileName) 根据给定的文件路径字符串创建FileReader对象
FileReader fr = new FileReader("c.txt");
常用方法:
public int read() 从输入流读取一个字符
File f = new File("c.txt");
FileReader fr = new FileReader(f);
int i = fr.read();
System.out.println(i); //输出:97
读取到文件末尾时,会返回-1
public int read(char[] cbuf) 将读取的字符存入字符数组中,返回值是存储了多少个字符
File f = new File("c.txt");
FileReader fr = new FileReader(f);
char [] c = new char[1024];
int len = 0;
System.out.println(len = fr.read(c)); //输出:8
System.out.println(new String(c,0,len)); //输出:abcdef你好
String (byte[] b ) String(byte[] b , int off , int length)
这两个字符串的构造方法,可以很方便的输入字符数组的字符转成字符串输出
读取整个文本文件:
File f = new File("c.txt");
FileReader fr = new FileReader(f);
int len = 0;
while ((len = fr.read()) != -1) {
System.out.println((char) len);
}
同样是通过read()方法读到文件末尾时会返回-1的特性
将这个当作循环终止的条件,并将读取到的字节强转成char型
就可以看到文本文件中的所有字符
FileWriter类:
FileWriter(File file) 根据File对象创建字符输出流对象
File f = new File("c.txt");
FileWriter fw = new FileWriter(f);
FileWriter(String fileName) 根据路径字符串创建字符输出流对象
FileWriter fw = new FileWriter("c.txt");
FileWriter(File file , boolean append) 根据File对象创建字符输出对象,可续写
File f = new File("c.txt");
FileWriter fw = new FileWriter(f,true);
FileWriter(String fileName , boolean append) 根据路径字符串创建字符输出流对象,可续写
FileWriter fw = new FileWriter("c.txt",true);
常用方法:
public void write(int c) 输出一个字符到文本中
File f = new File("c.txt");
FileWriter fw = new FileWriter(f,true);
fw.write(99); //在c.txt文本中续写了一个字符 c
fw.close();
public void write(char[] cbuf) 将字符数组中的字符都输出到文本中
File f = new File("c.txt");
FileWriter fw = new FileWriter(f, true);
char[] c = {'a', 's', '$', '1'};
fw.write(c);
fw.close();
public abstract void write(char[] b, int off, int len) 将字符数组中从off开始,len个元素输出到文本中
File f = new File("c.txt");
FileWriter fw = new FileWriter(f, true);
char[] c = {'a', 's', '$', '1'};
fw.write(c,1,3);
fw.close();
public void write(String str) 将一个字符串输出到文本中
File f = new File("c.txt");
FileWriter fw = new FileWriter(f, true);
fw.write("你好,java");
fw.close();
利用FileReader和FileWriter的读写方法,也可以完成文本的拷贝操作
使用单个字符传输:
FileWriter fw = new FileWriter("b.txt", true);
FileReader fr = new FileReader("c.txt");
int len = 0;
while ((len = fr.read()) != -1) {
fw.write(len);
}
fw.close();
fr.close();
使用字符数组传输:
FileWriter fw = new FileWriter("d.txt", true);
FileReader fr = new FileReader("c.txt");
int len = 0;
char[] c = new char[1024];
while ((len = fr.read(c)) != -1) {
fw.write(c,0,len);
}
fw.close();
fr.close();