Как прочитать текстовый файл в список массивов объектов в JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Как прочитать текстовый файл в список массивов объектов в Java

Сообщение Anonymous »

Сейчас я работаю над проектом и столкнулся с несколькими проблемами. Этот проект предполагает работу с двумя классами: subject и TestSubject. По сути, мне нужна моя программа (в классе TestSubject), чтобы читать детали (код субъекта и имя субъекта) из текстового файла и создавать объекты субъекта, используя эту информацию, а затем добавлять их в список массива. Текстовый файл выглядит следующим образом:

Код: Выделить всё

ITC105: Communication and Information Management
ITC106: Programming Principles
ITC114: Introduction to Database Systems
ITC161: Computer Systems
ITC204: Human Computer Interaction
ITC205: Professional Programming Practice
первая часть — это код субъекта, т. е. ITC105, а вторая часть — это имя (коммуникация и управление информацией).
Я создал объект субъекта с кодом и именем в виде строк с геттерами и сеттерами для разрешения доступа (в предметном классе):

Код: Выделить всё

private static String subjectCode;
private static String subjectName;

public Subject(String newSubjectCode, String newSubjectName) {
newSubjectCode = subjectCode;
newSubjectName = subjectName;
}

public String getSubjectCode() {
return subjectCode;
}
public String getSubjectName() {
return subjectName;
}

public void setSubjectCode(String newSubjectCode) {
subjectCode= newSubjectCode;
}

public void setSubjectName(String newSubjectName) {
subjectName = newSubjectName;
}
На данный момент у меня есть код для чтения файла и создания списка массивов:

Код: Выделить всё

public class TestSubject {
@SuppressWarnings({ "null", "resource" })
public static void main(String[] args) throws IOException {

File subjectFile = new File ("A:\\Assessment 3 Task 1\\src\\subjects.txt");
Scanner scanFile = new Scanner(subjectFile);

System.out.println("The current subjects are as follows: ");
System.out.println(" ");

while (scanFile.hasNextLine()) {
System.out.println(scanFile.nextLine());
}

//This array will store the list of subject objects.
ArrayList  subjectList = new ArrayList ();

//Subjects split into code and name and added to a new subject object.
String [] token = new String[3];

while (scanFile.hasNextLine()) {
token = scanFile.nextLine().split(": ");
String code = token [0] + ": ";
String name = token [1];

Subject addSubjects = new Subject (code, name);

//Each subject is then added to the subject list array list.
subjectList.add(addSubjects);
}

//Check if the array list is being filled by printing it to the console.
System.out.println(subjectList.toString());
Этот код не работает, список массивов просто печатается как пустой. Я пробовал сделать это несколькими способами, включая буферизованное устройство чтения, но пока не могу заставить его работать. Следующий раздел кода позволяет пользователю ввести код и имя субъекта, которые затем также добавляются в список массивов. Этот раздел кода работает отлично, я просто застрял на приведенной выше части. Любой совет о том, как это исправить, чтобы заставить его работать, был бы замечательным.
Еще одна маленькая вещь:

Код: Выделить всё

 File subjectFile = new File ("A:\\Assessment 3 Task 1\\src\\subjects.txt"); //this file path
Scanner scanFile = new Scanner(subjectFile);
Мне хотелось бы знать, как изменить путь к файлу, чтобы он продолжал работать, если папка будет перемещена или файлы будут открыты на другом компьютере. Файл .txt находится в исходной папке с файлами Java. Я пробовал:

Код: Выделить всё

 File subjectFile = new File ("subjects.txt");
Но это не работает и просто выдает ошибки.

Вернуться в «JAVA»