日期:2014-05-20  浏览次数:20782 次

新手请教关于输入输出流的问题
麻烦大家看一下代码,问题在注释中


import java.io.*;

public class TestBufferedStream1 {
public static void main(String[] args) {
try {
FileReader in = new FileReader("D:\\A.txt");
FileWriter out = new FileWriter("D:\\A.txt");
BufferedReader bin = new BufferedReader(in);
BufferedWriter bout = new BufferedWriter(out);
int c = 0;
//往文件中写入0到20数字
for(int i=0;i<=20;i++) {
bout.write(i);//这样编码,写入txt文件的是一些符号,而不是预想中的0到20的数字。如果改成bout.write(String.valueOf(i));就可以了,这是为什么呢
bout.newLine();
}
bout.flush();
//从文件中读取内容并打印出来
while((c=bin.read()) != -1) {
System.out.print(c);//这里如果这样写,输出的并不是预想中的数字,如果改成System.out.print((char)c);就可以了。为什么一定要转换成字符类型呢
}
bout.close();
bin.close();
in.close();
out.close();

}catch(FileNotFoundException e) {
System.out.println("未找到文件");
}catch(IOException e1) {
System.out.println(e1.getMessage());
}
}
}

java io

------解决方案--------------------
不要用Reader来操作数字,因为Reader是字符流是用来处理字符的。bout.write(int c)是用来写入一个字符的,c表示一个字符的ASCII码,也就是bout.write(i);写入的是某个字符,而这个字符对应的ASCII码是i。你应该用OutputStream和InputStream来处理你这种情况。