如何将arrayList打印到文本文件?

时间:2018-03-05 13:18:47

标签: java io text-files

我想将ArrayListprojects)中的对象作为字符串打印到文件中。它们当前存储为“项目”,在不同的类中定义。

当我使用System.out.print而不是outputStream.print时,它工作正常,信息按预期显示。只要我想要它在文件中,文件就不会出现。

import java.io.PrintWriter;
import java.util.ArrayList;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;

public class FileController
{
    public static void finish(ArrayList<Project> projects) 
    {
        PrintWriter outputStream = null;            
        try 
        {
            outputStream = new PrintWriter(new FileOutputStream("project.txt"));
        }
        catch (FileNotFoundException e)
        {
            System.out.println("Error opening the file stuff.txt.");
            System.exit(0);
        }
        System.out.println("Writing to file");

        for(int i = 0; i < projects.size(); i++)
        {
            //System.out.print(projects.get(i) + "," + projects.get(i).teamVotes);
            outputStream.println(projects.get(i) + "," + projects.get(i).teamVotes);

        }

        outputStream.close();

        System.out.println("End of Program");
    }
}

1 个答案:

答案 0 :(得分:0)

我确定文件在某处,您的代码没有错误。至少,我没有看到任何。也许您需要调用outputStream.flush(),因为您使用的构造函数使用来自给定OutputStream的自动行刷新,请参阅documentation。但afaik关闭流将自动刷新。

您的路径"project.txt"是相对的,因此该文件将放置在您的代码执行位置。通常,它靠近.class文件,检查项目中的所有文件夹。

你也可以试试像

这样的绝对路径
System.getProperty("user.home") + "/Desktop/projects.txt"

然后你会很容易找到该文件。

无论如何,你应该使用Javas NIO 来编写和阅读文件。它围绕着课程FilesPathsPath。然后代码可能看起来像

// Prepare the lines to write
List<String> lines = projects.stream()
    .map(p -> p + "," + p.teamVotes)
    .collect(Collectors.toList());

// Write it to file
Path path = Paths.get("project.txt");
Files.write(path, lines);

,这很容易。