BufferedWriter会导致中断

时间:2014-01-28 13:07:32

标签: java

我正在尝试为我正在处理的程序创建一个保存函数,并且出于某种原因,每当我运行它时,它只会超过try {}语句的第一行。 我的代码如下所示。

  public void saveGame() { 
            System.out.println("saveGame");
     try
     {
        System.out.println("try saveGame");
        BufferedWriter b = new BufferedWriter(new FileWriter("chardata.txt"));
        System.out.println("try saveGame2");
        String sp = System.getProperty("line.separator");
        System.out.println("try saveGame3");

        b.write("Miscellaneous char data here");

        b.close();
     }
        catch(IOException ex)
        {
            System.out.println("File Writing Error");
            }
  }

当我运行该程序时,唯一可以打印的行是“saveGame”和“try saveGame”。没有“文件写入错误”,它只是在“尝试saveGame”行后没有做任何事情。我不确定这是否相关,但我是在学校的计算机上进行此操作,这可能会限制权限。任何形式的解释和/或帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为编写文件的更好方法是使用FileOutputStreamOutputStreamWriter。 另外,您应该将b.close移动到finally语句,因为如果在执行b.close之前抛出异常,它将永远不会被执行。

public void saveGame() { 
     System.out.println("saveGame");
     try
     {
        System.out.println("try saveGame");
        String path = "./chardata.txt"; //your file path
        File file = new File(path);
        FileOutputStream fsal = new FileOutputStream(file);
        OutputStreamWriter osw = new OutputStreamWriter(fsal);
        Writer w = new BufferedWriter(osw);
        System.out.println("try saveGame2");
        String sp = System.getProperty("line.separator");
        System.out.println("try saveGame3");

        w.write("Miscellaneous char data here");

     }
        catch(IOException ex)
        {
            System.out.println("File Writing Error");
        }
        finally{
            if(w!=null)
              w.close();
        }
  }