当前位置: 首页 > 面试题库 >

Java读取文件的不同方法

欧镜
2023-03-14
问题内容

似乎有很多,很多方法的Java(阅读文本文件BufferedReaderDataInputStream等等),我个人最喜欢的是ScannerFile在构造函数(它只是简单地使用mathy数据处理更好的作品,并有熟悉的语法)。

蜘蛛鲍里斯(Boris)也提到ChannelRandomAccessFile

有人可以解释每种方法的利弊吗?具体来说,我什么时候要使用它们?

(编辑)我想我应该具体一点,并补充说我对这种Scanner方法有很强的偏好。所以真正的问题是,当 不会 想使用它?


问题答案:

让我们从头开始。问题是你想做什么?

了解文件实际上是什么很重要。文件是光盘上字节的集合,这些字节是您的数据。Java提供了以上各种级别的抽象:

  1. File(Input|Output)Stream-将这些字节读取为byte
  2. File(Reader|Writer)-从字节流中读取为char
  3. Scanner-从的流中读取char并将其标记化。
  4. RandomAccessFile-将这些字节读取为可搜索的byte[]
  5. FileChannel -以安全的多线程方式读取这些字节。

在每个装饰的顶部都有装饰器,例如,您可以使用添加缓冲BufferedXXX。你可以断行的认识添加到FileWriterPrintWriter。您可以将InputStream转换为Reader,然后将转换为InputStreamReader(目前是指定的字符编码的唯一方法Reader)。

所以- 我什么时候不想使用它[aScanner]?

如果愿意,您不会使用a Scanner(这些示例):

  1. 读入数据为bytes
  2. 读入序列化的Java对象
  3. bytes从一个文件复制到另一个文件,可能需要进行一些过滤。

这也是一文不值的Scanner(File file)构造函数将File并打开一个FileInputStream平台默认的编码
-这是几乎总是一个 主意。通常认为,您应该明确指定编码,以避免讨厌的基于编码的错误。此外,流不会被缓冲。

所以你可能会更好

try (final Scanner scanner = new Scanner(new BufferedInputStream(new FileInputStream())), "UTF-8") {
    //do stuff
}

丑,我知道。

值得注意的是,Java 7提供了更多的抽象层来消除循环文件的需要-
这些位于Files类中:

byte[] Files.readAllBytes(Path path)
List<String> Files.readAllLines(Path path, Charset cs)

这两种方法都将整个文件读入内存,这可能不合适。在Java 8中,通过添加对新StreamAPI的支持进一步改善了这一点:

Stream<String> Files.lines(Path path, Charset cs)
Stream<Path> Files.list(Path dir)

例如,要从中获取单词流,Path可以执行以下操作:

    final Stream<String> words = Files.lines(Paths.get("myFile.txt")).
            flatMap((in) -> Arrays.stream(in.split("\\b")));


 类似资料:
  • 本文向大家介绍java读取properties文件的方法,包括了java读取properties文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java读取properties文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的java程序设计有所帮助。

  • 本文向大家介绍python 不同方式读取文件速度不同的实例,包括了python 不同方式读取文件速度不同的实例的使用技巧和注意事项,需要的朋友参考一下 1、按行读取较慢较耗时: 2、快速读取所有行: 以上这篇python 不同方式读取文件速度不同的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Java读取文件方法汇总,包括了Java读取文件方法汇总的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java读取文件的方法,供大家参考,具体内容如下 1、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文件内容 4、随机读取文件内容 5、将内容追加到文件尾部 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍java读取properties配置文件的方法,包括了java读取properties配置文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java读取properties配置文件的方法。分享给大家供大家参考。具体分析如下: 这两天做java项目,用到属性文件,到网上查资料,好半天也没有找到一个满意的方法能让我读取到.properties文件中属性值,很是郁闷,网上讲

  • 本文向大家介绍利用Python读取文件的四种不同方法比对,包括了利用Python读取文件的四种不同方法比对的使用技巧和注意事项,需要的朋友参考一下 前言 大家都知道Python 读文件的方式多种多样,但是当需要读取一个大文件的时候,不同的读取方式会有不一样的效果。下面就来看看详细的介绍吧。 场景 逐行读取一个 2.9G 的大文件 CPU i7 6820HQ RAM 32G 方法 对每一行的读取进行

  • 我在维护java为我读取文件时遇到问题。我有一本书。包含所有丹麦岛屿的txt文件,但不管我如何尝试,它都不会显示在控制台中。 这是带有main方法的类。从这里它读取文件并拆分行以将数据放入ArrayList中。 当行被拆分后,它将通过另一个类,该类将数据转换为字符串,并将其放入另一个Arraylist,该Arraylist将在控制台中打印。 我不会得到任何错误或异常,程序会一直运行,直到它认为列表