如何在BufferedWriter中获取缓冲区

我正在用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就报出作家的当前缓冲区的内容。 目前,我们正在努力维持另一个缓冲区来保存内容,但是我想知道是否有更好的方法来实现这一目标。

回答:

你可以写一个CustomBufferedWriter它类似于BufferedWriter并在实施添加一个getter方法cb

回答:

如果我理解正确,您想要报告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中获取缓冲区 的全部内容, 来源链接: utcz.com/qa/265619.html

回到顶部