1

エラーログをファイルに書き込むプログラムを作成していますが、そのファイルを保存するように要求しても、何も起こりません (例外もありません)。私は何を間違っていますか?

「保存」ボタンのアクションリスナー:

public void actionPerformed(ActionEvent arg0) {
    String savePath = getSavePath();

    try {
        saveFile(savePath);
    } catch (IOException e) {
        e.printStackTrace();
    }

}

そして、3 つのファイル メソッド:

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(...)関数は、あなたがフィードしたパスで何もしていません。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 に答える