当前位置: 首页 > 面试题库 >

Java-如何将ArrayList写入文件,然后将该文件读取(加载)到原始ArrayList?

孔鹤龄
2023-03-14
问题内容

我正在用Java编写一个程序,该程序显示了一系列课后俱乐部(例如,EG Football,曲棍球-由用户输入)。俱乐部被添加到以下ArrayList

private ArrayList<Club> clubs = new ArrayList<Club>();

通过以下方法:

public void addClub(String clubName) {
    Club club = findClub(clubName);
    if (club == null)
        clubs.add(new Club(clubName));
}

‘Club’是一个带有构造函数的类-名称:

public class Club {

    private String name;

    public Club(String name) {
        this.name = name;
    }

    //There are more methods in my program but don't affect my query..
}

我的程序正在运行-它使我可以将新的Club对象添加到我的数组列表中,可以查看该数组列表,还可以删除所需的任何内容,等等。

但是,我现在想将该arrayList(俱乐部)保存到文件中,然后我希望以后可以加载该文件,并且相同的arraylist再次存在。

我为此有两种方法(请参见下文),并且一直在尝试使其工作,但还没有运气,任何帮助或建议都将不胜感激。

保存方法(文件名由用户选择)

public void save(String fileName) throws FileNotFoundException {
    String tmp = clubs.toString();
    PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
    pw.write(tmp);
    pw.close();
}

加载方法(当前代码无法运行-文件为字符串,但需要为Club吗?

public void load(String fileName) throws FileNotFoundException {
    FileInputStream fileIn = new FileInputStream(fileName);
    Scanner scan = new Scanner(fileIn);
    String loadedClubs = scan.next();
    clubs.add(loadedClubs);
}

我还使用GUI运行该应用程序,此刻,我可以单击“保存”按钮,然后允许我键入名称和位置并保存它。该文件出现并可以在记事本中打开,但显示为Club @
c5d8jdj之类的(对于列表中的每个Club)


问题答案:

作为练习,我建议您执行以下操作:

public void save(String fileName) throws FileNotFoundException {
    PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
    for (Club club : clubs)
        pw.println(club.getName());
    pw.close();
}

这会将每个俱乐部的名称写在文件中的新行上。

Soccer
Chess
Football
Volleyball
...

我把货物交给你。 提示 :您一次写了一行,然后可以一次读一行。

Java中的每个类都扩展了Object该类。这样,您可以覆盖其方法。在这种情况下,您应该对该toString()方法感兴趣。在您的Club班级中,您可以覆盖它以任意格式显示有关该班级的消息。

public String toString() {
    return "Club:" + name;
}

然后,您可以将上面的代码更改为:

public void save(String fileName) throws FileNotFoundException {
    PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
    for (Club club : clubs)
         pw.println(club); // call toString() on club, like club.toString()
    pw.close();
}


 类似资料:
  • 问题内容: 你如何将文件内容读入Java? 以下是文件内容: 只需将每个单词读入。 问题答案: 此Java代码读取每个单词并将其放入ArrayList中: 如果要逐行而不是逐字阅读,请使用和。

  • 问题内容: 我试图将XML 存储到XML文件中,以便稍后可以检索信息,然后将其显示回控制台。 有人可以告诉我最有效的方法吗? 编辑: 这是我要写入外​​部文件的内容 这一切都创建了一个Bank用户,该用户被扔到中,然后我想存储他们的信息,以便稍后返回并重新显示。 问题答案: //根据需要修改下面的类 //下面的类实际写了

  • 我有一个包含这类内容的文件: AccountNumber=1000,BranchName='11',Balance=420,CustomerNumber=1 线程“main”java.io.StreamcorreptedException:无效的流头:6163636f在java.io.objectinPutStream.ReadStreamHeader(ObjectInPutStream.java

  • 我正在编写一个非常简单的程序GUI程序来模拟手机。“手机”有四个主要按钮:电话、通讯录、信息和应用程序。我编写了所有的GUI,在使用Contact类时遇到了一个问题,它是整个程序的主干! Contact类非常简单,它有两个String类型的实例变量,分别是“name”和“number”。我想构建一个Contact类型的ArrayList,允许添加联系人,然后创建方法来附加到序列化文件并从中读取。

  • 问题内容: 我目前正在阅读“用困难的方式学习Python”,已经读到了第16章。 写入文件后,似乎无法打印文件的内容。它只是不打印任何内容。 问题答案: 你不调用函数和,而不是你只是得到他们的 指点 。由于它们是函数(或更准确地说,是方法),因此您需要在函数名称后调用它:。 那就是问题所在; 您以写入模式打开文件,该模式将删除文件的所有内容。您写入了文件,但从未关闭它,因此更改从未提交,文件保持为