在字节输入流时,我们知道,字节输入输出可以复制文件。但也有缺点,就是当读取文件且想要显示结果的时候,在文件中有汉字的话,就不好用了。这时候字符输入流就派上用场了。
字符流代码:
public static void main(String[] args)throws IOException {
FileReader f = new FileReader("f:\\a.txt");
int len = 0;
while((len=f.read())!=-1) {
System.out.print((char)len);
}
}
FileReader f = new FileReader("f:\\a.txt");
创建字符流对象
while((len=f.read())!=-1) {
System.out.print((char)len);
}
读取,这时注意加上(char),不然如果打开文件会被转码。
结果:
97 98
dqa
dqd
你好
我叫
小米
今年
五岁了
dqc
csw4
23cf
如果是字节流读取会是什么样呢?代码如下:
FileInputStream f = new FileInputStream("f:\\a.txt");
byte[] b = new byte[2];
int len = 0;
while((len = f.read(b))!= -1) {
System.out.print(new String(b,0,len));
}
}
结果如下:
97 98
dqa
dqd
?愫?
?医?
?∶?
?衲?
?逅炅?
dqc
csw4
23cf
所以在读取并需要显示结果的时候用字符流比较好。注意:
这时候我们也可以创建字符数组来读取,速度更快!
char[] b = new char[1024];
int len = 0;
while((len=f.read(b))!=-1) {
System.out.print(new String(b,0,len));
}
完