从.txt文件读取Java I / O流并跳过前2行(StringTokenizer)

时间:2018-04-22 00:13:26

标签: java io stringtokenizer

我正在尝试从名为" Marks.txt"的.txt文件中读取文本。 (我附上了这里的文件 - > Marks.txt),其中包含学生数据, Like this, thefirst 2 rows are headers or just labels for the data

前两行只是上面所述的标题或标签,我试图跳过或忽略这些行,因为我只需要从.txt文件中的实际int和float数据创建对象。这是学生类中的 loadFrom 方法:

public static Student loadFrom2(BufferedReader aFile) throws IOException {
Student newStudent = new Student();

StringTokenizer st = new StringTokenizer(aFile.readLine());

newStudent.ID = Integer.parseInt(st.nextToken());
newStudent.a1 = Float.parseFloat(st.nextToken());
newStudent.a2= Float.parseFloat(st.nextToken());
newStudent.a3 = Float.parseFloat(st.nextToken());
newStudent.a4 = Float.parseFloat(st.nextToken());
newStudent.midterm = Float.parseFloat(st.nextToken());
newStudent.finalExam = Float.parseFloat(st.nextToken());

return (newStudent);

}

这是我的测试文件,它读取数据:

 private static void readTest2() throws IOException {
    BufferedReader  file1;
    Student         student1;
    String line;

    file1 = new BufferedReader(new FileReader("C:\\Marks.txt"));
    student1 = Student.loadFrom2(file1);
    System.out.println(student1);

}

public static void main(String[] args) throws IOException {
    readTest2();
}

我使用了Marks.txt文件并删除了前两行(标题或列标签),并且能够在我的loadFrom2方法中正确使用BufferedReader和StringTokenizer来读取.txt文件我的readTest2文件。

你们任何人都可以告诉我如何跳过前2行吗?我应该从Marks.txt中读取并在loadFrom2方法中为Marks.txt文件中的每一行数据创建一个Student对象。我应该有一个名为 CourseSection 的另一个类,它有一个来自上一个类的对象的ArrayList。

如果我需要澄清任何事情,请告诉我。如果您想看到以下是完整的类文件:

Student.java Class

CourseSection.java Class

StudentSaveLoadTest *测试阅读Marks.txt文件

1 个答案:

答案 0 :(得分:0)

您可以使用BufferedReader.readLine()来消费输入行,而不必对其执行任何操作。

也许将您的代码更改为以下内容:

public static Student loadFrom2(String studentLine) throws IOException {
    Student newStudent = new Student();

    StringTokenizer st = new StringTokenizer(studentLine);

    newStudent.ID = Integer.parseInt(st.nextToken());
    newStudent.a1 = Float.parseFloat(st.nextToken());
    newStudent.a2 = Float.parseFloat(st.nextToken());
    newStudent.a3 = Float.parseFloat(st.nextToken());
    newStudent.a4 = Float.parseFloat(st.nextToken());
    newStudent.midterm = Float.parseFloat(st.nextToken());
    newStudent.finalExam = Float.parseFloat(st.nextToken());

    return (newStudent);
}

private static void readTest2() throws IOException {

    BufferedReader file1 = new BufferedReader(new FileReader("C:\\Marks.txt"));

    file1.readLine();
    file1.readLine();

    String line = file1.readLine();
    while(line != null){
        Student student1 = Student.loadFrom2(line);
        System.out.println(student1);
        line = file1.readLine();
    }
}