从文本文件中读取特定行,然后输出java

时间:2014-11-04 22:40:34

标签: java arrays

我有一个文本文件,其中包含一个格式如下的值列表:

FirstName LastName
Labs
10, 25, 25, 15, 30, 50, 40, 40, 40, 25, 50
10, 25, 25, 15, 29, 49, 39, 39, 39, 25, 49
Homework
100, 100, 100, 100, 100, 100, 100, 100
100, 100, 100, 100, 100, 100, 100, 93
Quizzes
10, 10, 15, 10, 9, 10, 15
8, 10, 11, 9, 7, 7, 11
Exams
100, 100, 100, 100, 100
96, 78, 88, 62, 92

有没有办法可以采取一条特定的线路,比如考试中的线条,它只读取全部100条,并将该线条存储到一维数组中?

2 个答案:

答案 0 :(得分:0)

您必须仔细阅读该文件,直到您可以从文件中读取检查,然后准备将值插入到数组中。 因此,您需要阅读该文件,开始搜索您的考试关键字,然后在下一行开始阅读值,直到您达到您想要的数量或文件/行尾。

答案 1 :(得分:0)

两种方式:

  1. 您可以使用Java的RandomAccessFile类。
  2. 您可以使用正则表达式查找所需的部分。
  3. 我稍后会编辑这个答案以提供两者的例子(如果其他人没有尽快完成)

    UPDATE :使用RandomAccessFile(这很快就完成了。可能有更好的方法)

    public static void main(String[] args)
    {
        RandomAccessFile file = null;
        try
        {
            file = new RandomAccessFile("grades.txt", "r"); // read-only file
            while(!file.readLine().startsWith("Exams"))
            {
                file.seek(file.getFilePointer());
            }
            // Get the numbers and add them
        }
        catch (IOException e)
        {
             e.printStackTrace();
        }
        finally
        {
            try
            {
                file.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }
    

    while()循环正在将指针移动到"考试后的下一行。"您可以跟踪要读取的字节数,并创建一个从当前位置读取文件的字节数组。直到最后我都不会读,因为"考试"可能不是最后的记录。为了使它适用于文件的所有部分(即家庭作业),你必须更加聪明,这样你才能获得比你需要的更多的数据。但这就是RandomAccessFile背后的想法。当你必须在"考试中输入新的成绩时,这门课程也很有用。"对于这种情况,文件权限必须设置为" rw"。

    如果您可以保证文件的结构永远不会改变,RandomAccessFile很棒,因为您可以快速转到文件的不同部分,读取和/或写入信息,然后继续。您可以将其视为一个非常低级别的数据库。