Topic: 帮忙看一个程序 (File Input/Output)

  Print this page

1.帮忙看一个程序 (File Input/Output) Copy to clipboard
Posted by: bluedest
Posted on: 2004-09-02 10:15

我有一个文件aaa.txt,里面存了一个串“123”,
我的意思是要先把它读出来,逐个加1,就是“234”,
把处理过的数据再写回原文件,代码如下:
import java.io.*;
public class Test
{
public static void main(String[] args)
{
try
{
BufferedInputStream fi=new BufferedInputStream(new FileInputStream("aaa.txt"));
BufferedOutputStream fo=new BufferedOutputStream(new FileOutputStream("aaa.txt"));
int i;
while((i=fi.read())!=-1)
fo.write((i+1));
fi.close();
fo.close();

}
catch(Exception e)
{e.printStackTrace();}
}
}

很奇怪的是写完以后aaa.txt里什么都没有了。
可是要是把输出的文件改为另一文件就没有问题
也既改成bbb.txt或ccc.txt都ok,
请问这是怎么回事?

2.Re:帮忙看一个程序 [Re: bluedest] Copy to clipboard
Posted by: boper
Posted on: 2004-09-02 10:21

可能你的文件正在被其它的程序使用,或者没有正确的关上它原来的reference

3.Re:帮忙看一个程序 [Re: boper] Copy to clipboard
Posted by: bluedest
Posted on: 2004-09-02 10:24

boper wrote:
可能你的文件正在被其它的程序使用,或者没有正确的关上它原来的reference


应该不会,就是一个简单的.txt文件,而且是我随手建的一 个,
现在的问题是:
为什么把原文件内容读出来,就不能再写回原文件了?

4.Re:帮忙看一个程序 [Re: bluedest] Copy to clipboard
Posted by: yung
Posted on: 2004-09-02 14:19

文件句柄乱了!!这当然是不可以的!!!

正确流程如下:
打开文件(读)=〉读到数组中=>关闭源文件=>处理数组
=>打开文件(写)=〉写数组=〉关闭输出文件。

5.Re:帮忙看一个程序 [Re: bluedest] Copy to clipboard
Posted by: bluedest
Posted on: 2004-09-02 14:53

可是为什么这样就不可以?
用了缓冲池了啊,直接在内存里处理完不行吗,
要是新建一个数组,操作也是在内存里,这两个有什么区别?

6.Re:帮忙看一个程序 [Re: bluedest] Copy to clipboard
Posted by: littledeer1974
Posted on: 2004-09-02 16:37

不完全是你想要的,但是也许能给你点启发

import java.io.*;

public class question04 {
public static void main(String[] args) {
byte[] temp = new byte[4];
BufferedInputStream fi;
BufferedOutputStream fo;
try {
fi = new BufferedInputStream(new FileInputStream("aaa.txt"));
while (fi.available() > 0) {
fi.read(temp);
}
fi.close();

} catch (Exception e) {
e.printStackTrace();
}

try {
fo = new BufferedOutputStream(new FileOutputStream("aaa.txt"));
try {
//test

temp[0]=0;

fo.write(temp);
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
try {
fo.close();
} catch (IOException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}
}

7.Re:帮忙看一个程序 [Re: bluedest] Copy to clipboard
Posted by: bluedest
Posted on: 2004-09-02 16:57

多谢各位 !


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923