关于将信息保存到.txt文件,我有一个问题。基本问题是我可以将多个文件保存到txt文件,但我的扫描仪只能查看第一个条目。这是用Java完成的,无论如何这里是文件上传方法:
public void saveFile() throws IOException {
FileWriter file = new FileWriter("dataStorage.txt", true);
//This writes the name of the object to which the file belongs
// in this case the name would be FILESYS,
file.write(name+"\n");
// This writes the number of files in the array
file.write(files.size()+"\n");
for (File f: files){
String fileString = f.getString();
file.write(fileFile+"\n");
}
file.flush();
file.close();
}
然后,这是我用来从系统调用文件的过程:
public void loadFile() throws FileNotFoundException {
Scanner scanner = new Scanner(new File("dataStorage.txt"));
name = scanner.nextLine();
int numFiles = Integer.parseInt(scanner.nextLine());
System.out.println(numFiles);
for (int i = 0; i<numFiles; i++){
String currentFileString = scanner.nextLine();
System.out.println(currentFileString);
Movie currentFile = new File(currentFileString);
files.add(currentFile);
}
}
我尝试手动将txt文件中的第一个数字更改为两个或更多,但它仍然只读取第一个数字(根据我如何更改它,它可以将整个文本文件打印为一个条目)。对不起,如果这是一个措辞不好的问题(第一个),任何帮助将不胜感激! btw文件只是一个填补问题并简化它的填充程序。
答案 0 :(得分:0)
loadFile()
方法只会读取一个&#34;保存块&#34; (名称,计数,值),但saveFile()
方法附加到任何现有文件,因此永远不会加载第一个之后的任何保存。
从, true
构造函数中删除FileWriter
。
我们说你有:
name = "ABC"
files = [ "Hello", "World" ]
致电saveFile()
将创建dataStorage.txt
,其中包含:
ABC
2
Hello
World
重新启动程序并调用loadFile()
会将其恢复到内存中。
向files
添加另一个条目:
name = "ABC"
files = [ "Hello", "World", "Foo" ]
致电saveFile()
会追加至dataStorage.txt
,并将其保留为:
ABC
2
Hello
World
ABC
3
Hello
World
Foo
重新启动您的计划并致电loadFile()
只会获得第一个块:
name = "ABC"
files = [ "Hello", "World" ]