我正在尝试创建一个文件并附加一些信息。
我要做的第一件事是创建文件夹,然后创建文件。
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的程序目录中创建文件,因为我需要将程序发送给其他人,我猜它不是关于权限。
答案 0 :(得分:0)
你没有向我们展示你所得到的错误,但这里有几点:
File.mkdir()
不会在未创建目录时抛出异常(而是返回false
)。因此,显示消息对话框的catch
背后没有任何意义。
由于目录路径实际上由两个文件夹组成,因此您需要调用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