java - java中文件的不同类型的对象

标签 java

我正在做一个项目,其中有很多文件需要处理。当我必须以不同的方式提供文件时,问题就出现了,例如:

  1. 文件的每一行将包含一个字符串
  2. 每行中的字符数,例如:

    1st line :  A B 4
    
    2nd line :  6 C A 6 & U #
    
    etc.
    
  3. 文件将不包含。字符串例如

    第一行:Lion Panther jaguar 等

我已经阅读了如何有效地处理文件,但我很困惑何时使用缓冲流以及何时使用无缓冲。如果我使用 BufferedStream,则应使用 BufferInputStreamBufferReader/BufferWriter

同样,我对I/O Stream、File I/O Stream、ByteArray I/O Stream感到困惑。有很多事情。谁能建议我何时使用哪一种以及为什么?针对不同场景,如何高效处理?

最佳答案

嗯,这个问题可能没有直接的答案,但如果您感到困惑,也不必担心。关于缓冲无缓冲的讨论之前已经进行过很多次了。

例如在此链接中:bufferred vs non-bufferred ,给出了一个很好的提示(检查标记为正确的答案)。这是因为在使用 Bufferred 流时,这些流存储在一个称为(令人惊讶的是)缓冲区的小内存区域中。写入的数据也会发生同样的情况(它们在存储到硬盘之前先进入缓冲区)。这提高了性能,因为降低了 I/O 操作的开销(取决于操作系统)。检查Java文档:Bufferred Streams

因此,为了明确起见,当您需要提高 I/O 操作的性能时,请使用 Bufferred 流。当您想要确保在继续之前已写入输出时,请使用无缓冲流(因为在从缓冲区写入/写入缓冲区时可能总是会发生错误,例如当您想要写入日志时,它可能一直打开,因此不需要访问它,不需要缓冲区)。

关于java - java中文件的不同类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22741412/

相关文章:

java - 创建一个添加方法,如果重复,则不会添加到列表中?

java - 获取两个音频输入流之间的差异 - java

java - 如何在应用程序关闭时建立服务器连接

java - @Digits 约束(Bean Validation-JSR 303)如何支持 String 类型?

java - 选择元素 Jsoup 最里面的子元素

java - Android 上的 DriverManager.getConnection() 出现 UnsupportedOperationException

java - Eclipse调试插件: Access underlying java object from IJavaObject of JDT

java - 如何配置 JpaPersistModule?

java - 以下断言语法正确吗?

java - 如何使用 Maven Failsafe 插件运行 JUnit 5 集成测试?