我正在为Java项目创建文件写入/读取实用程序。我创建了一个类,它封装了特定文件的一般读,写等类型的函数。将使用此文件实用程序的类是多线程的。在该类的内部,我有一个FileWriter
(和FileReader
)对象的实例变量。它在本课程的构建中初始化。在每个编写方法的内部,我创建了一个BufferedWriter
对象的新实例来传递FileWriter
实例。我有什么理由不这样做吗?每个BufferedWriter
实例是否需要一个唯一的FileWriter
实例?或者我能够在许多不同的FileWrite
实例中使用相同的BufferedWriter
实例吗?
答案 0 :(得分:1)
我无法想象为什么你认为你需要这个,但你不是。您应该做的是在BufferedWriter
周围创建一个单 FileWriter
,并让您的方法写入,当然需要同步。< / p>
多个BufferedWriters
的众多问题之一是,如果您关闭其中任何一个,基础FileWriter
也会关闭。
答案 1 :(得分:0)
使用BufferedWriter的重点是缓冲数据以最小化系统调用的数量。这样做是为了提高效率,但它的工作原理是将写入延迟/批处理到它包装的Writer中。
简而言之,
创建多个BufferedWriters是你可以做的最糟糕的事情,因为;
作家(或任何一类)不像你撒上的仙尘,使你的代码更好。它有一个目的,你应该只在你知道它有帮助时添加它。