私はちょうど楽しみのためにJavaでちょっと遊んでいます。私の問題についてここにいくつかのポストを見た後、私は私のエラーを見ることができません。私は、私が忘れてしまった何か私が間違ってやっているFileWriterは書きません
private void overrideDefaultPropertiesFile(String logFile) {
try {
ClassLoader classLoader = this.getClass().getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("log4j.properties");
String fileText = "";
String search = "log4j.appender.archivo.file";
String adaptSlashes = logFile.replace("\\", "/");
String replacement = "log4j.appender.archivo.file=" + adaptSlashes;
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
String line;
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while ((line = bufferedReader.readLine()) != null) {
if (!line.startsWith(search)) {
fileText += line + "\r\n";
}
}
bufferedReader.close();
fileText += replacement + "\r\n";
URI uri = getClass().getResource("/log4j.properties").toURI();
File log4jProperties = new File(uri);
FileWriter fileWriter = new FileWriter(log4jProperties, false);
fileWriter.write(fileText);
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
フラッシュは、それが暗黙的に呼ばれていますので、てFileWriterを閉じますが、それがファイルに書き込まれていないコンテンツ...
?
よろしくお願いいたします。
-------- --------更新
私はEclipseと、それはMavenの上にあるアプリケーションによ。パスポイントのデバッグ: - >C:\Users\iagoaa\Documents\serpa\src\main\resources\log4j.properties
URI -
のEclipse(私が修正しようとしているファイル)>file:/C:/Users/iagoaa/Documents/serpa/target/classes/log4j.properties
することは(今までは、私はそれは同じではありませんでした実現しませんでした私はこのファイルのURIをチェックして、変更は書かれていません)
私はこのブログの最後の方法(Link info)を使用しています。それはJARの上にあるプロジェクトですnew File("src/main/resources/log4j.properties")
できません。私は、Eclipseのパッケージブラウザでファイルを見たとき
-------- -------- 2つの
コードの動作を更新し、私はパスと混乱していました。また、出力ファイルには書き込まれましたが、変更があったかどうかを確認するために入力する代わりに、F5キーを押してフォルダを更新し、変更日時が変更されたかどうかを確認しましたが、変更されない理由はわかりません。私は例外をスローしなければならないと書かれています。
デバッガを使用して試行しました。または出力したコンテンツは、期待される内容を持つことを確認するためにstdoutに印刷された内容ですか? – GhostCat
何らかの形で 'uri'をデバッグしてください。 'log4jProperties'は、IDEやmaven(あなたが使っているものが分からない)とは違うファイルを指している可能性があります。通常は、プロジェクトをいくつかのtempディレクトリでビルドして実行します。 – Evgeny
あなたの回答をありがとう、私は詳細を追加して質問を更新しました。 – Aker666