【问题标题】:BufferedWriter with Path parameter and buffer size parameter带有 Path 参数和缓冲区大小参数的 BufferedWriter
【发布时间】:2013-10-02 12:47:56
【问题描述】:

我知道我可以做到(当然需要相应的 try and catch)

Path path = Paths.get(outputFieLocation);
BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8);

还有这个

BufferedWriter writer = new BufferedWriter(new FileWriter(outputFieLocation), 5 * 1024);

有什么方法可以使用 Path 作为参数来设置缓冲区大小?

【问题讨论】:

  • 默认的bufferSize是8192个字符,你需要更大吗?这个值对于 I/O 操作应该足够了,你不应该有性能问题
  • 你打算怎么写数据?!
  • @csoroiu 我正在合并 100MB 到 500MB 的大型日志文件。我想使用至少 500 KB 的缓冲区。
  • @user2511414 你能说得具体点吗,我没明白你的问题。
  • 如果你想合并文件,为什么不使用 transferTo 函数呢?如果你不需要做一些特殊的逻辑,这个功能会更快。 stackoverflow.com/questions/18622768/…

标签: java java-io


【解决方案1】:

不可以,但您可以使用path.toFile()Path 转换为适合FileWriter 构造函数的等效File 对象。请注意,您不应使用 FileWriter,因为它不允许指定 Charset

final File file = path.toFile();
BufferedWriter out = new BufferedWriter(
   new OutputStreamWriter(new FileOutputStream(file),"UTF-8"), bufferSize);

(from here)

如果没有特定原因设置自定义缓冲区大小,请使用Files.new... 替代方案,JDK 默认值是合理的。

【讨论】:

    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 2018-11-27
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多