保存文件不会保存文件

时间:2013-04-20 20:39:23

标签: java

我正在创建一个将错误日志写入文件的程序,但是当我要求保存该文件时,没有任何反应(甚至没有例外)。我做错了什么?

"保存" 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";
}

2 个答案:

答案 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 路径。