在一个java Project中,我想向处于同一目录下的文件写入数据。结果没有成功,不知为何。 请大家帮我看看,指点下 谢谢
下面是我的源文件的一部分。try {  
        File file2 = new File("cmm.txt");  这个cmm.txt文件与本程序处在同一个目录下。
        System.out.println(file2.getAbsolutePath());
        FileWriter fw = new FileWriter(file2);
        BufferedWriter bw = new BufferedWriter(fw);
        String s;
//下面使用BufferedWriter向cmm.txt中写入数据。 结果却没有成功,cmm.txt的内容没有任何改变。 请教是什么原因?
        s = br.readLine();
        while (s != null) {
            bw.write(s);           
            bw.newLine();
            s = br.readLine();
        }  
      
        in1 = new FileInputStream(file2);
        this.inputComplete.setEnabled(false);
    } catch (FileNotFoundException ex) {
        this.jTextArea2.setText("file not found");
        Logger.getLogger(CmmView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException e) {
        e.printStackTrace();
    }

解决方案 »

  1.   

    你把那个文件cmm.txt换成绝对路径试一试,看行不行?
      

  2.   

    String s;
            s = br.readLine();
            while (s != null) {
                bw.write("for test");
                System.out.println(s);//用此测试,在后台可以看到内容打印出来了,但是没能写入到文件中去
                bw.write(s);           
                bw.newLine();
                s = br.readLine();
            }      我用BufferedWriter直接向cmm.txt写数据,也没有用。
     FileWriter fw = new FileWriter(file2);
            BufferedWriter bw = new BufferedWriter(fw);        
            bw.write("fortest");
    结果cmm.txt中没有写入 “fortest".
      

  3.   

    绝对路径也没有效果 
    会不会是IDE的问题呢? 我用的是netbeans
      

  4.   

    bw.write()  之后,没有刷新,数据还在缓冲区,没有到文件中,刷新下
      

  5.   

    你把那个File file2 = new File("cmm.txt");  换成绝对路径看行不行,比如:File file2 = new File("C:\\Java\\cmm.txt");  
      

  6.   

    我试过换成绝对路径了,也通过file2.getAbsolutPath()看过了,路径也没有错。
    还试了下用 file2.getAbsoluteFile(),也同样无效。
    痛苦。。
      

  7.   

    我晕,会不会是你没刷新啊   加个bw.flush();
      

  8.   

     我加了flush()了,还是没有用
    try {  
            File file2 = new File("cmm.txt"); 
            File file3 = file2.getAbsoluteFile();
            FileWriter fw = new FileWriter(file3);
            BufferedWriter bw = new BufferedWriter(fw);        
            bw.write("fortest");
            bw.flush();
     这个是测试下用的
            String s;
            s = br.readLine();
            while (s != null) {
                bw.write("for test");
                System.out.println(s);
                bw.write(s); 
                 bw.flush();
                bw.newLine();
               
                s = br.readLine();
            }        
            in1 = new FileInputStream(file2);
            this.inputComplete.setEnabled(false);
        } catch (FileNotFoundException ex) {
            this.jTextArea2.setText("file not found");
            Logger.getLogger(CmmView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException e) {
            e.printStackTrace();
        }
      

  9.   

    莫名其妙地好了,大家给分析下原因吧。。
    比较正常的代码如下:
    文件还是没有看到改变,但写入应该是成功了。因为我后面的程序要从其中读数据,结果读成功了。
    try {  
            File file2 = new File("cmm.txt"); 
            File file3 = file2.getAbsoluteFile();
            FileWriter fw = new FileWriter(file2);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.flush();
            String s;
            s = br.readLine();
            while (s != null) {            
                System.out.println(s);
                bw.write(s); 
                 bw.flush();
                bw.newLine();           
                s = br.readLine();
            }        
            in1 = new FileInputStream(file2);//后面要用到这个文件中的内容
            this.inputComplete.setEnabled(false);
        } catch (FileNotFoundException ex) {
            this.jTextArea2.setText("file not found");
            Logger.getLogger(CmmView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException e) {
            e.printStackTrace();
        }
      

  10.   

    我试过了,flush下能输出到文件的啊,不flush不能输出到文件。
      

  11.   

    那我就不知道什么原因了,应该还是要flush的
      

  12.   

    flush()确实是必要的,至少现在能写进去了,只是没看到效果~
    谢谢各位了
      

  13.   

    带我个~flush,以前的老大难,成功了却没看到任何显示~
    吃了亏以后就记得了~