如何访问 BufferedWriter 中的缓冲区
How to get acess to buffer in BufferedWriter
我正在使用 BufferedWriter 在 java 中写入一个文件。这是我的代码 -
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();
}
}
我想报告 writer 当前缓冲区的内容,因为它包含 cp1252 中的 "Unmappable character"。
目前,我们正在尝试维护另一个缓冲区来保存内容,但我想知道是否有更好的方法来实现相同的目的。
如果我没理解错的话,你要报告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);
您可以编写一个类似于 BufferedWriter
的 CustomBufferedWriter
,并在您的实现中为 cb
添加一个 getter。
我正在使用 BufferedWriter 在 java 中写入一个文件。这是我的代码 -
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();
}
}
我想报告 writer 当前缓冲区的内容,因为它包含 cp1252 中的 "Unmappable character"。 目前,我们正在尝试维护另一个缓冲区来保存内容,但我想知道是否有更好的方法来实现相同的目的。
如果我没理解错的话,你要报告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);
您可以编写一个类似于 BufferedWriter
的 CustomBufferedWriter
,并在您的实现中为 cb
添加一个 getter。