Как сохранить строки из текстового файла, используя буферизованный ридер - PullRequest
2 голосов
/ 24 октября 2019

Итак, у меня есть текстовый файл с информацией о курсах, таких как курс CRN, полное название курса, описание курса, кредиты курса. И в этом файле есть еще много подобных курсов в строках по 4, разделенных новой строкой. Мне нужно сохранить каждую строку в строку, чтобы потом передать в конструктор, чтобы я мог сохранить их в хэш-карте. Также после каждой новой строки он будет знать, что началась новая информация о курсе. Но я не очень знаком с буферизованным читателем, чтобы сделать это. У меня до сих пор просто так, что он может читать и выводить каждую строку, но мне нужно сохранить каждую строку (CRN в CRN, имя в имя и т. Д.), Вот что у меня есть:

рассматриваемый метод:

public void addCourses() {
        String sb;
        try(BufferedReader br = new BufferedReader(new FileReader("testC.txt"))) {
            while((sb = br.readLine()) != null) {  
                System.out.println(sb); //just prints out all lines identical to text file
                //Do stuff here?
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

Текстовый файл выглядит примерно так:

MAT205 
Discrete Mathematics 
description here 
4.0

MAT210 
Applied Linear Algebra 
description here 
3.0 

...and so on

Спасибо за любую помощь, извините, если я объясняю вещи плохо, первый вопрос здесь

Редактировать: ДаУ меня уже есть определенный класс курса со всеми получателями и установщиками и соответствующими полями.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Я предположил, что у вас уже есть POJO для курса, который выглядит следующим образом:

class Course {
    private String crn;
    private String name;
    private String description;
    private String credit;

    //general getters and setters 
}

Затем в следующем примере кода показано, как использовать BufferedReader для чтения текстового файла и сохранения содержимого в Collection * 1005. *.

List<Course> courses = new ArrayList<>();
try (BufferedReader br = Files.newBufferedReader(Paths.get("testC.txt"))) {
    String line;
    Course course = new Course();
    while ((line = br.readLine()) != null) {
        if (!line.trim().isEmpty()) {
            if (course.getCrn() == null) {
                course.setCrn(line.trim());
            } else if (course.getName() == null) {
                course.setName(line.trim());
            } else if (course.getDescription() == null) {
                course.setDescription(line.trim());
            } else {
                course.setCredit(line.trim());
                courses.add(course);
            }
        } else {
            course = new Course();
        }
    }
} catch (IOException e) {
    //TODO exception handling
}
0 голосов
/ 24 октября 2019

Может быть, вы можете попробовать следующий подход.

String sb;
    try(BufferedReader br = new BufferedReader(new FileReader("kmh.txt"))) {
        int count = 0;
        while((sb = br.readLine()) != null) {
           // System.out.println(sb); //just prints out all lines identical to text file
            if(!sb.isEmpty()){

                String courseCRN = null;
                String courseFullName = null;
                String courseDescription = null;
                String courseCredits = null;
                if(count == 0)  courseCRN = sb;
                if(count == 1)  courseFullName = sb;
                if(count == 2)  courseDescription = sb;
                if(count == 3)  courseCredits = sb;
                count++;

               //Save your course data in map
            }

            if(count == 4) count = 0;

        }
    } catch(Exception e) {
        e.printStackTrace();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...