2015-12-29 111 views
0

我试图创建一个文件并附加一些信息。创建文件时出错

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

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

介意加入th这个问题的例外是什么? –

+0

发布例外日志 – Ramanlfc

回答

0

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

  1. File.mkdir()扔在情况下的目录中没有创建一个例外(它返回false代替)。所以在catch后面显示消息对话框没有意义。

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

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(); 
    } 

}

这可以帮助你。您应该尝试使用“/”而不是“\” 当使用“\”时,我得到一个它无法找到目录的异常。

+0

更好的是,使用File.separator。 – Berger

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 /作家

0

对不起球员,我不得不因为我遇到的网络问题迅速发布问题,所以我在我的文章会错过很多东西

@manouti是正确的......我怀念的mkdir 小号 ......这就够了创建2个文件夹

非常感谢球员,并再次..真的真的很抱歉,对于缺乏信息