(二)IO流——字符流,FileReader、FileWriter

字符流仅能对文本文件进行操作

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)

扫描二维码关注公众号,回复: 2856022 查看本文章

这两个字符串的构造方法,可以很方便的输入字符数组的字符转成字符串输出

读取整个文本文件:

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();

猜你喜欢

转载自blog.csdn.net/weixin_42022555/article/details/81810309