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

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

 

读取整个文本文件:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值