【问题标题】:Moving from buffer to an array for manipulation in Java [closed]从缓冲区移动到数组以在 Java 中进行操作 [关闭]
【发布时间】:2013-05-13 02:00:09
【问题描述】:

我正在制作一个从 .txt 文档中获取数据的程序,我使用了 BufferedReader 方法来遍历该文档。然后它将文档内容打印到控制台中。但是,我一生都无法弄清楚如何将 BufferedReader 中的内容获取到字符串数组中,以便我可以进一步操作它。有什么帮助吗?

【问题讨论】:

  • 你能发布你的代码吗?即使它按原样工作,也鼓励这样做。请参阅faqHow to Ask

标签: java bufferedreader arrays


【解决方案1】:

如果您想要一个包含文档行的 String[] 数组,您可以使用 BufferedReader.readLine(),并将这些行填充到 List<String> 中,而不是打印它们。

创建字符串列表的方法如下:

    List<String> lines = new ArrayList<String>();

以下是您可以添加的方法:

    String line = null;
    while( (line = reader.readLine()) != null ) {
        lines.add( line );
    }

【讨论】:

  • 我将如何实现这个?我不是最了不起的程序员,我只想能够 120% 理解,这样我就可以再做一次。谢谢你的回答
  • 您想同时将整个文档保存在内存中吗?您要保存行列表还是字符列表?
  • 是的,我想将文档读入一个数组,以便显示和操作它。
  • 你想要字符串数组还是字符数组?
  • 啊,那么您可以保留当前循环,并将您已经获得的字符串添加到 List。如果您使用的是 Java 7,则可以遵循 @Nick 的更简单方法。顺便说一句,欢迎来到 StackOverflow。您可以通过单击左侧的向上箭头来支持多个答案,并通过单击左侧的复选标记接受一个答案。如果您有 Java 7,我建议您接受 Nick 的回答。
【解决方案2】:

Files.readAllLines 方法将文件读入List&lt;String&gt;,原始文件中每行一个String。如果这是您的风格,Files.readAllBytes 方法只是将文件读入字节数组。这些都是 Java NIO 2 library 的一部分,也是 Java SE 7 的一部分。

Path myFile = Paths.get("hello_world.txt");
List<String> fileLines = Files.readAllLines(myFile);

【讨论】:

  • 我添加了一个具体的例子,应该可以按原样工作。
  • 这可能是 Java 7 最简单的方法。+1。
  • 恐怕不行。在路径和文件方面出现错误。 :/我注定要失败._.
  • 什么错误?您使用的是 Java SE 7 吗? (如果没有,您可能应该是。)您是否记得将import java.nio.file.Filesimport java.nio.file.Pathimport java.nio.file.Paths 放在源文件的顶部,就在包声明的下方?如果您不知道这意味着什么,我建议您暂停项目并查看基础知识。我并不是要给人一种粗鲁的印象,但你必须先学会走路才能跑步;)
  • 你的教授或助教有办公时间吗?这些可能超级很有帮助,而且通常比在 SO 中更容易进行讨论和解决问题。
【解决方案3】:

使用 DataInputStream 代替 BufferedReader

DataInputStream is = new DataInputStream (new FileInputStream ("myFileName"));

然后你可以存储一个字符串,方法是调用 is.readUTF();

【讨论】:

  • 请问我该怎么做?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多