我正试图将列表的每个索引保存为以下java格式的文本文件中的新行,并将其读取为两个单独的数组列表以备以后使用。我已经完成了保存部分,现在我想把它读回两个单独的列表
保存格式化
类保存列表
public class SaveLists{
private List<Integer> First= new ArrayList<>();
private List<Integer> second= new ArrayList<>();
public void save(List l) throws IOException{
try{
File f = new File ("E:\Sample.txt");
if (!f.exists()) {
f.createNewFile();
}
FileWriter fw = new FileWriter(f.getAbsoluteFile(),true);
BufferedWriter bw = new BufferedWriter(fw);
for(Object s : l) {
bw.write(s + System.getProperty("line.separator"));
}
bw.write(System.getProperty("line.separator"));
bw.close();
}catch(FileNotFoundException e){System.out.println("error");}
}
public void ReadFromText(){
//Read from Text file and save in both lists
}
}
主类:
public static void main(String[] args) {
temp t = new temp();
t.First.add(1);
t.First.add(2);
t.First.add(3);
t.second.add(6);
t.second.add(5);
t.second.add(4);
t.save(t.First);
t.save(t.second);
// t.ReadFromText();
}
由于两个保存操作都在同一个线程上,因此行将以同步方式写入文件。因此,在读取文件中的所有行之后,我们可以根据输入列表的大小来分割行,即第一组值将由"第一"列表插入。
public void ReadFromText() {
// Read from Text file and save in both lists
List<Integer> output1 = new ArrayList<>();
List<Integer> output2 = new ArrayList<>();
try {
Path path = Path.of("D:\Sample.txt");
List<String> inputList = Files.lines(path).collect(Collectors.toList());
for (int i = 0; i < inputList.size(); i++) {
String s = inputList.get(i);
if (!s.isEmpty()) {
if (i < First.size()) {
output1.add(Integer.valueOf(s));
} else {
output2.add(Integer.valueOf(s));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}