2017-01-26 8 views
0

私はちょうど楽しみのために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キーを押してフォルダを更新し、変更日時が変更されたかどうかを確認しましたが、変更されない理由はわかりません。私は例外をスローしなければならないと書かれています。

+1

デバッガを使用して試行しました。または出力したコンテンツは、期待される内容を持つことを確認するためにstdoutに印刷された内容ですか? – GhostCat

+1

何らかの形で 'uri'をデバッグしてください。 'log4jProperties'は、IDEやmaven(あなたが使っているものが分からない)とは違うファイルを指している可能性があります。通常は、プロジェクトをいくつかのtempディレクトリでビルドして実行します。 – Evgeny

+0

あなたの回答をありがとう、私は詳細を追加して質問を更新しました。 – Aker666

答えて

0

コードに間違いはありません。バッファ付きリーダーを閉じた後にはちょうどうまく機能しているようです(おそらく、inputStream.close()が見つからなかったようです)。問題は、リソースファイルが、生成された.classファイルとartifactsフォルダ(使用するIDEによって異なる)にコピーされることです。デバッガを使用して、修正されたファイルへのパスを見つけるために、URIが指しているパスを確認してください。

+0

ご回答いただきありがとうございます。詳細をご質問を更新しました。 – Aker666

+0

まだわかりません:パックされたリソースファイルlog4j.properties(.jarの中にあります)を変更したいのですか?変更のソースは、src \ main \ resources \のlog4j.propertiesにする必要があります。 – aUserHimself

+0

私はこの問題を更新しました!ご協力いただきありがとうございます! – Aker666

関連する問題