主题:求助:帮忙看一下这个菜鸟的I/O程序
tonnye
[专家分:70] 发布于 2007-11-18 22:58:00
File f=new File("test1.txt");
Scanner scan=new Scanner(System.in);
int []b=new int[5];
for (int n = 0; n < 5; n++) {
b[n]=scan.nextInt();
try {
FileOutputStream fos=new FileOutputStream(f);
fos.write(b[n]);
fos.close();
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
想实现从键盘输入数字 存入文件中的功能
但是在test文件中出现的不是我输入的数字 而是乱码之类的字符...
是那里出错了啊?
回复列表 (共5个回复)
沙发
a68599608 [专家分:40] 发布于 2007-11-19 06:44:00
一个int是四个字节,而文件操作是针对二进制的文件来操作的吧~~
试一下BufferedIO再看看?
板凳
tonnye [专家分:70] 发布于 2007-11-19 13:24:00
BufferedWriter的也是乱码...
try {
FileWriter fw=new FileWriter("tonnye123.txt");
BufferedWriter bw=new BufferedWriter(fw);
for (int m = 0;m < 5; m++){
bw.write(m);
bw.flush();
}
bw.close();
3 楼
sjhlovejava [专家分:1690] 发布于 2007-11-19 20:13:00
执行下这句,你就懂了
InputStream is = System.in;
try {
System.out.println(is.read());
} catch (IOException e1) {
e1.printStackTrace();
}
当输入 1 时,打印的是 49 .
所以,如果想写入文件是 1 的话 ,就需要 输入 49.
当然,如果输入 50 的话 ,写进文件就是 2 了 .
4 楼
tonnye [专家分:70] 发布于 2007-11-21 16:05:00
还是不懂啊....
5 楼
heidonglgc [专家分:1370] 发布于 2007-11-22 13:29:00
你写入的是二进制文件, 并不是乱码。
如果你想用记事本打开的时候看得到,那fos.write(b[n]);改成fos.write(b[n]+48);另外 FileOutputStream fos=new FileOutputStream(f);每次调用的时候都会删除原来的文件而建立一个新的文件。
我来回复