黑马程序员技术交流社区
标题:
FileInputStream和
[打印本页]
作者:
王中利
时间:
2012-10-3 22:31
标题:
FileInputStream和
比较FileInputStream流的read方法和FileReader流的read方法有什么异同点?
作者:
×_X_×
时间:
2012-10-3 22:44
很简单,一个是读的是字节,一个读的是字符
作者:
×_X_×
时间:
2012-10-3 22:47
主要区别应该是在读取编码的不同吧。。。。。
作者:
徐-星星
时间:
2012-10-3 22:53
首先,返回值都是int类型的。读取结果,都是当返回为-1时,表现全部信息读取完毕。
FileInputStream字节流是 以一个一个字节来读。
FileReader字符流是 以一个一个字符来读取的。字节跟字符的不同,去查java相关信息。
乱码问题:是由于 字节流不指定编码方式,取的是系统默认的编码方式。
请看以下程序,可以帮助你:(C盘根目录 建个 test.txt 内容为 java软件开发),运行看结果。
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
public class TestIoReader {
public static void main(String[] args) {
try {
//字符流
FileReader fr = new FileReader("c:\\test.txt");
int flag = -1;
while((flag=fr.read())!=-1){
System.out.print((char)flag);
}
System.out.println();
//字节流 不指定编码。取系统底层编码
InputStreamReader isr = new InputStreamReader(new FileInputStream("c:\\test.txt"));
while((flag = isr.read())!=-1)
{
System.out.print((char)flag);
}
System.out.println();
//编码gb2312
isr = new InputStreamReader(new FileInputStream("c:\\test.txt"),"gb2312");
while((flag = isr.read())!=-1)
{
System.out.print((char)flag);
}
System.out.println();
//编码UTF-8
isr = new InputStreamReader(new FileInputStream("c:\\test.txt"),"UTF-8");
while((flag = isr.read())!=-1)
{
System.out.print((char)flag);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2