簡體   English   中英

從文本文件中讀取特定行,然后輸出java

[英]Read Specific Lines from a text file and then outputing java

我有一個文本文件,其值列表格式如下:

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,然后僅將該線存儲到一維數組中?

您將必須通讀文件,直到可以從文件中讀取考試為止,然后准備將值插入數組中。 因此,您需要讀取文件,開始搜索您的檢查關鍵字,然后在下一行開始讀取值,直到達到所需數量為止,或者文件/行末尾。

兩種方式:

  1. 您可以使用Java的RandomAccessFile類。
  2. 您可以使用正則表達式查找所需的零件。

稍后,我將編輯此答案以提供這兩個示例(如果其他人不早做)

更新 :使用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就是很棒的選擇,因為您可以快速轉到文件的不同部分,對其進行讀和/或寫信息,然后繼續前進。 您可以將其視為非常底層的數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM