回 帖 发 新 帖 刷新版面

主题:求助:帮忙看一下这个菜鸟的I/O程序


        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个回复)

沙发

一个int是四个字节,而文件操作是针对二进制的文件来操作的吧~~
试一下BufferedIO再看看?

板凳


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 楼

执行下这句,你就懂了

InputStream is = System.in;
        
        try {
            System.out.println(is.read());
        } catch (IOException e1) {
            
            e1.printStackTrace();
        }

当输入 1 时,打印的是 49 .
所以,如果想写入文件是 1 的话 ,就需要 输入 49.
当然,如果输入 50 的话 ,写进文件就是  2 了 .

4 楼

还是不懂啊....

5 楼

你写入的是二进制文件, 并不是乱码。
如果你想用记事本打开的时候看得到,那fos.write(b[n]);改成fos.write(b[n]+48);另外 FileOutputStream fos=new FileOutputStream(f);每次调用的时候都会删除原来的文件而建立一个新的文件。

我来回复

您尚未登录,请登录后再回复。点此登录或注册