【问题标题】:Java Reading a txt fileJava读取一个txt文件
【发布时间】:2012-07-27 06:42:05
【问题描述】:

我正在进行编码实验,通常一切都很顺利,直到最后一部分。我真的不知道从哪里开始这个子问题,这真的让我感到压力,就像你无法相信的那样。我已经尝试了一次又一次的错误。这是一个真正令人沮丧的事情,因为在它之前和之后的一切都很顺利。只是我不知道从哪里开始,即使在阅读了一些教程之后,我仍然无法让它正常工作。

基本上,我必须阅读这个 txt 文件,(http://www.mediafire.com/?a6d7c0c5cdu1gup) 并将数据放入 5 个数组中(没有扫描仪)

Name 必须进入 Name 数组,N/Y 必须进入 Before 数组,下一列数字必须进入 timespent 数组,下一列必须进入 assistants 数组和最后一行必须进入风险数组。

所以我们有 5 个数组

String Name [] = new String [20)

Char Before [] = new Char [20]

Int timeSpent [] = new Int [20]

Int Assistants [] = new int [20]

Double Risk [] = new Double [20]

所以这些是我制作的 5 个数组,但我遇到的问题是读取文本文件并将其写入,以便适当的列进入适当的数组。

因此,对于将我的代码放在一起并将这些值放入适当的相应数组以便我可以继续进行的任何帮助,我们将非常非常感激。非常感谢。

【问题讨论】:

  • 你真的必须使用5个数组吗?拥有一个用户定义类型的数组(或List)会干净,其中包含一个人的所有详细信息。
  • 建议将您未来的文本粘贴到代码库站点之一。
  • 请粘贴 txt 文件的一些(缩写)行,而不是链接到 mediafire...无论如何,您可以阅读每一行并使用“拆分”方法来解析它,我猜,我不会打开那个 mediafire 链接:)

标签: java arrays file io


【解决方案1】:

使用 BufferedReader 逐行获取并使用正则表达式拆分

  File file = new File("1.txt");
  FileReader fr = new FileReader(file);
  BufferedReader in = new BufferedReader(fr);
  String line;
  while ((line = in.readLine()) != null){
      String[] record = line.split(",\\s*");  
      // record[0] contain name
      // record[1] contain N/Y etc.. 
      //* code here 

  }

【讨论】:

    【解决方案2】:

    您可以查看this 示例,该示例展示了如何在不使用Scanner 类的情况下遍历文件。如果您已阅读该行,则可以使用 .split(String regex) 将该行拆分为令牌。由于所有部分均以逗号分隔,因此您可以使用以下代码:line.split(",");,其中line 表示您刚刚从文件中读取的行。

    split 函数产生一个数组,因此您可以遍历它并将数据放入您选择的正确数组中。

    以上应该可以满足您的需求。但是,您可以查看JavaCSV,它也应该可以帮助您做您需要的事情:

    Java CSV 是一个小型快速开源 Java 库,用于阅读和 编写 CSV 和纯分隔文本文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2019-02-05
      • 2014-10-19
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 2021-03-29
      相关资源
      最近更新 更多