创建文件时出错

时间:2015-12-29 13:57:47

标签: java file

我正在尝试创建一个文件并附加一些信息。

我要做的第一件事是创建文件夹,然后创建文件。

try {
        if (!new File("Results\\" + p.getName()).exists()) {
            new File("Results\\" + p.getName()).mkdir();
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Error creating the directory");
    }


try {
    PrintWriter  writer = new PrintWriter ("Results\\" + p.getName() + "\\" + simulation.getNameSim(), "utf-8"); 
    //After this instruction jumps to exception

    //Code
    } catch (Exception e) {

    }

变量p.getName和simulation.getName具有信息。调试说没有错误创建目录但在打印后程序抛出异常。

有什么想法吗?我正在java的程序目录中创建文件,因为我需要将程序发送给其他人,我猜它不是关于权限。

3 个答案:

答案 0 :(得分:0)

你没有向我们展示你所得到的错误,但这里有几点:

  1. File.mkdir() 会在未创建目录时抛出异常(而是返回false)。因此,显示消息对话框的catch背后没有任何意义。

  2. 由于目录路径实际上由两个文件夹组成,因此您需要调用mkdirs()而不是mkdir()。前者将创建任何所需的父目录。在这种情况下,它会在创建由Results命名的文件夹之前首先创建文件夹p.getName()

答案 1 :(得分:0)

这段代码对我来说很好。 它基本上是你的代码,虽然保持不变的东西:

public static void main(String[] args) {
    try {
        if (!new File("Results/anyfoldername" ).exists()) {
            new File("Results/anyfoldername" ).mkdir();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }


try {
    PrintWriter  writer = new PrintWriter ("Results/anyfolder/anyfilename","utf-8"); 
    //After this instruction jumps to exception

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

}

这可能会对你有所帮助。你应该尝试使用" /"而不是" \" 使用" \"我得到一个例外,它无法找到目录。

答案 2 :(得分:0)

正如之前的回答所说,没有太多事情可以继续:)

但我会说你需要这样的东西

if (!new File("Results\\" + p.getName()).exists()) {
    if (!new File("Results\\" + p.getName()).mkdir()) {
      JOptionPane.showMessageDialog(null, "Error creating the directory");
      return; 
   }
}

  //removed try / catch here for clarity
  File  file = new File("Results\\" + p.getName() + "\\" + simulation.getNameSim()).createNewFile(); 
  // I would then use the Buffered File answer as detailed here: http://stackoverflow.com/questions/1053467/how-do-i-save-a-string-to-a-text-file-using-java

在我看来,您正在使用FileWriter,然后将使用FileWriter.println(),但您的代码片段中并不清楚。

我也会在文件路径中使用File.separator而不是\。

就个人而言,我总是选择BufferedReader / Writers