我正在使用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();
}
}
我想报告当前写入缓冲区的内容,因为它包含" Unmappable字符"根据cp1252。 目前,我们正在尝试维护另一个缓冲区来保存内容,但我想知道是否有更好的方法来实现相同的目标。
答案 0 :(得分: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);
答案 1 :(得分:1)
您可以撰写与CustomBufferedWriter
类似的BufferedWriter
,并在您的实施中为cb
添加一个getter。