当前位置: 首页 > 知识库问答 >
问题:

从文本文件中一次性读取所有数据的最合适方法是什么?

龚博涛
2023-03-14

我有一个文本文件,我想把它的全部内容读入一个字符串变量。当我使用Android的assetManager时,该文件将作为InputStream打开。open()方法。

将整个内容读入字符串的最佳实践方式是什么?目前,我正在使用一个InputStreamReader和一个BufferedReader包装InputStream,并使用一个while循环,通过readLine()方法逐行读取文本。

这篇文章有没有更好的阅读方法考虑到我没有逐行阅读的要求,如果可能的话,我想一次读完

共有3个答案

闻人仲渊
2023-03-14

这是另一种可能的方法。

BufferedReader br = new BufferedReader(new FileReader("a.txt"));
char[] cbuf = new char[500];
br.read(cbuf);
String fileContents = new String(cbuf);
伍玮
2023-03-14

人们通常不应该重新发明轮子,所以如果Android上的开销可以承受的话,就使用ApacheCommons库。使用组织。阿帕奇。平民木卫一。尤蒂尔斯。托斯特林。

InputStream in = new FileInputStream(new File("a.txt"));
String s = IOUtils.toString(in, "UTF-8");
马才
2023-03-14

这就是Java7文件的内容。readAllLines方法确实如此——我认为这是一种非常好的方法(它使用了一种try-with-resources语法,很容易在android上转换):

public static List<String> readAllLines(Path path, Charset cs) throws IOException {
    try (BufferedReader reader = newBufferedReader(path, cs)) {
        List<String> result = new ArrayList<String>();
        for (;;) {
            String line = reader.readLine();
            if (line == null)
                break;
            result.add(line);
        }
        return result;
    }
}

在本例中,您可以将字符串附加到StringBuilder,而不是将其添加到列表中。

 类似资料:
  • 问题内容: 这就是我逐行处理文件的方式。但是,在这种情况下,我想在每次迭代中向处理器发送 两 行文本。(我正在处理的文本文件实际上在两行上存储了一条记录,因此每次都向处理器发送一条记录。) 用Java做到这一点的最佳方法是什么? 问题答案: 为什么不读两行呢? 假设您可以依靠输入文件中包含完整的2行数据集。

  • 字符串表[]=新字符串[100];

  • 问题内容: 在我的PHP应用程序中,我需要 从许多文件 (主要是日志) 的末尾开始读取多行 。有时我只需要最后一个,有时我需要数十或数百。基本上,我想像Unix 命令一样灵活。 这里有一些关于如何从文件中获取最后一行的问题(但是我需要 N 行),并给出了不同的解决方案。我不确定哪一个最好,哪个表现更好。 问题答案: 方法概述 在互联网上搜索时,我遇到了不同的解决方案。我可以将它们分为三种方法: 天

  • 问题内容: 我想从一个充满整数的文本文件中读取数据,并让程序在求和时将这些整数打印到屏幕上。这应该不难,但我无法弄清楚!!! 这是极其简化的文本文件: 这是我应该工作的代码: 最后,这是我得到的输出: 问题答案: 您在循环中两次调用textfile.nextInt()。尝试:

  • 我正在尝试使用TextScan从文本文件中读取数据。textfile由3个空格分隔,有100行数据和9列。我可以让它返回我认为是100×1的矩阵。我想知道如何得到返回矩阵100×9的代码。下面是我使用的代码... 正如您所看到的,当我访问数据{5}时,我得到了一些接近我想要的东西。我的最终目标是创建一个包含1-8列的矩阵,然后创建一个包含9行的列矩阵。下面是如何在文本文件中格式化数据。第1列之前有