我正在创建一个将错误日志写入文件的程序,但是当我要求保存该文件时,没有任何反应(甚至没有例外)。我做错了什么?
"保存" button actionListener:
public void actionPerformed(ActionEvent arg0) {
String savePath = getSavePath();
try {
saveFile(savePath);
} catch (IOException e) {
e.printStackTrace();
}
}
以及三种文件方法:
private String getSavePath() {
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.showOpenDialog(this);
return fc.getSelectedFile().getAbsolutePath();
}
private void saveFile(String path) throws IOException {
File outFile = createFile(path);
FileWriter out = null;
out = new FileWriter(outFile);
out.write("Hey");
out.close();
}
private File createFile(String path) {
String fileName = getLogFileName(path);
while (new File(fileName).exists()) {
fileCounter++;
fileName = getLogFileName(path);
}
File outFile = new File(fileName);
try {
outFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
return outFile;
}
private String getLogFileName(String path) {
return "enchantcalc_err_log_" + fileCounter + ".txt";
}
答案 0 :(得分:3)
您的getLogFileName(...)
功能对您提供的路径没有任何作用。因此,您尝试将文件写入enchantcalc_err_log_#.txt
(没有实际路径)。试试这个:
private String getLogFileName(String path) {
return path + "enchantcalc_err_log_" + fileCounter + ".txt";
}
答案 1 :(得分:2)
您可能只是找不到该文件。
在saveFile
结束时,请尝试以下操作:
out.close();
放一条线,像这样:
out.close();
System.out.println("File saved to: "+outFile.getAbsolutePath());
然后,您将获得保存它的 mistery 路径。