[Java ]读取并处理文件
[Java ]read & process file
我需要编写一个方法来读取 ArrayList
并将其写入文件。我已经得到了写入方法:
public void saveToFile(String file, ArrayList<Student> arrayList) throws IOException {
int length = arrayList.size();
FileWriter fileWriter = new FileWriter(file);
for (Student student : arrayList){
int id = student.getId();
String name = student.getName();
int rep = student.getAnzahlRepetitonen();
double wahrscheinlichkeit = student.getWahrscheinlichkeit();
boolean inPot = student.isInPot();
fileWriter.write(Integer.toString(id) + "; " + name + "; " + Integer.toString(rep) + "; " + Double.toString(wahrscheinlichkeit) + "; " + Boolean.toString(inPot) + "\n");
}
fileWriter.close();
}
我知道 reader 正在逐行处理。我必须如何编写 reader 代码才能在分号处拆分每一行,以便获得 "Student" 所需的 5 个对象?
您可以创建一个 BufferedReader 并在逐行读取时,使用“;”拆分该行并根据这些值构造 Student 对象。当然,当您这样做时,您必须知道结果数组中的哪个索引包含哪些信息,例如:
BufferedReader br = new BufferedReader(new FileReader(filename));
String line = null;
while ((line = br.readline()) != null) {
Student st = new Student();
String[] cols = line.split(";");
int id = Integer.parseInt(cols[0]);
st.setId(id);
// .. so on for other indices like cols[1] etc..
}
br.close();
如果您使用的是较新版本的 Java,您也可以这样做
for (String line : Files.realAllLines(Paths.get(filename)) {
Student st = new Student();
String[] data= line.split(";");
int id = Integer.parseInt(data[0]);
st.setId(id);
}
我需要编写一个方法来读取 ArrayList
并将其写入文件。我已经得到了写入方法:
public void saveToFile(String file, ArrayList<Student> arrayList) throws IOException {
int length = arrayList.size();
FileWriter fileWriter = new FileWriter(file);
for (Student student : arrayList){
int id = student.getId();
String name = student.getName();
int rep = student.getAnzahlRepetitonen();
double wahrscheinlichkeit = student.getWahrscheinlichkeit();
boolean inPot = student.isInPot();
fileWriter.write(Integer.toString(id) + "; " + name + "; " + Integer.toString(rep) + "; " + Double.toString(wahrscheinlichkeit) + "; " + Boolean.toString(inPot) + "\n");
}
fileWriter.close();
}
我知道 reader 正在逐行处理。我必须如何编写 reader 代码才能在分号处拆分每一行,以便获得 "Student" 所需的 5 个对象?
您可以创建一个 BufferedReader 并在逐行读取时,使用“;”拆分该行并根据这些值构造 Student 对象。当然,当您这样做时,您必须知道结果数组中的哪个索引包含哪些信息,例如:
BufferedReader br = new BufferedReader(new FileReader(filename));
String line = null;
while ((line = br.readline()) != null) {
Student st = new Student();
String[] cols = line.split(";");
int id = Integer.parseInt(cols[0]);
st.setId(id);
// .. so on for other indices like cols[1] etc..
}
br.close();
如果您使用的是较新版本的 Java,您也可以这样做
for (String line : Files.realAllLines(Paths.get(filename)) {
Student st = new Student();
String[] data= line.split(";");
int id = Integer.parseInt(data[0]);
st.setId(id);
}