2017-12-27 58 views
2

私はBufferedWriterでjavaでファイルを書きます。ここに私のコードです -BufferedWriterでバッファにアクセスする方法

public static void main(String[] args) { 
    try(BufferedWriter writer = Files.newBufferedWriter(filePath, Charset.forName("CP1252"))) { 
     while (thereIsContentToWrite){ 
      writer.write(content); 
     } 
    }catch (CharacterCodingException ce){ 
     //get content of writer's current buffer (java.io.BufferedWriter.cb) 
    }catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

私はそれがCP1252ごとに「マップできない文字」が含まれて作家の現在のバッファの内容を報告したいです。 現在、コンテンツを保持する別のバッファを維持しようとしていますが、これを達成するためのより良いアプローチがあるかどうかを知りたいと思います。

+1

あなたが書いている 'content'からコンテンツを取得することはできません。 – eatSleepCode

+0

@eatSleepCode私は言及したように別のバッファにコンテンツを保持しています。しかし、それはオーバーヘッドです。 –

答えて

1

あなたはBufferedWriterに似てCustomBufferedWriterを書いて、あなたの実装でcbためのゲッターを追加することができます。

1

私が正しく理解していれば、BufferedWriterバッファの内容を報告したいと思っています。これは、Reflection APIを使用して行うことができます。

次のコードでは、バッファの内容を取得する必要があります

// BufferedWriter buffer is the private field "cb" 
Field bufferField = writer.getClass().getDeclaredField("cb"); 
// We make this field accessible so we can retrieve its contents 
bufferField .setAccessible(true); 
// We can now get the data 
char[] buffer = (char[]) bufferField.get(writer); 
+0

ええ、これは確実なアプローチの一つです!返信いただきありがとうございます。しかし、他のAPIにリフレクションを使用するのは少し難解です。 –

関連する問題