1

我正在创建一个将错误日志写入文件的程序,但是当我要求保存该文件时,什么也没有发生(甚至没有异常)。我做错了什么?

“保存”按钮动作监听器:

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";
}
4

2 回答 2

3

您的getLogFileName(...)功能没有对您提供的路径做任何事情。因此,您试图将文件写入just enchantcalc_err_log_#.txt(没有实际路径)。试试这个:

private String getLogFileName(String path) {
    return path + "enchantcalc_err_log_" + fileCounter + ".txt";
}
于 2013-04-20T20:55:46.980 回答
2

您可能只是没有找到该文件。

在你的结尾saveFile,试试这个:之后

out.close();

写一行,像这样:

out.close();
System.out.println("File saved to: "+outFile.getAbsolutePath());

然后,您将获得保存它的神秘路径。

于 2013-04-20T21:58:14.357 回答