Java:代码将字符串写入txt文件,但只读取第一个条目

时间:2015-10-16 09:12:42

标签: java

关于将信息保存到.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文件只是一个填补问题并简化它的填充程序。

1 个答案:

答案 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" ]