【问题标题】:How to write an ArrayList of Strings into a text file?如何将字符串的 ArrayList 写入文本文件?
【发布时间】:2026-01-19 06:10:01
【问题描述】:

我想将ArrayList<String> 写入文本文件。

ArrayList 是用代码创建的:

ArrayList arr = new ArrayList();

StringTokenizer st = new StringTokenizer(
    line, ":Mode set - Out of Service In Service");

while(st.hasMoreTokens()){
    arr.add(st.nextToken());    
}

【问题讨论】:

  • 你希望这个输入的输出是什么?
  • 您的代码看起来像是将文本文件读入数组。你真的是这个意思吗?
  • 我的代码正在读取一个文件,然后对其进行标记并将这些标记存储在一个数组列表中。现在我想把这个数组列表写入一个文件。
  • 所有答案都假定了不同类型的输出。你能举个例子说明你希望输出的样子(或者它只需要可读吗?)
  • @kathy:我试图将这个数组列表写入一个文本文件。无论如何,我已经在 Andrey 的代码的帮助下做到了。感谢您的回复。

标签: java


【解决方案1】:
import java.io.FileWriter;
...
FileWriter writer = new FileWriter("output.txt"); 
for(String str: arr) {
  writer.write(str + System.lineSeparator());
}
writer.close();

【讨论】:

  • 定义你的数组为:ArrayList arr = new ArrayList();
  • arr 是什么意思?
  • 它是保存对数组的引用的变量的名称
  • 在这种情况下 output.txt 的确切位置是什么?内部存储器? - 即如何检索这个文件?
  • 在当前工作目录中(即您启动 java 程序的目录)
【解决方案2】:

如今,您只需一行代码即可做到这一点。 创建表示要写入的文件的 arrayList 和 Path 对象:

Path out = Paths.get("output.txt");
List<String> arrayList = new ArrayList<> ( Arrays.asList ( "a" , "b" , "c" ) );

创建实际文件,并用 ArrayList 中的文本填充它:

Files.write(out,arrayList,Charset.defaultCharset());

【讨论】:

  • 什么是文件,它来自什么包?
  • java.nio.file.Files,自 1.7 以来的标准 Java 类
  • 美观又简单。
【解决方案3】:

我建议使用 Apache Commons IO 库中的 FileUtils。如果它们不存在,它将创建输出文件的父文件夹。而 Files.write(out,arrayList,Charset.defaultCharset()); 不会这样做,如果父目录不存在则抛出异常存在。

FileUtils.writeLines(new File("output.txt"), encoding, list);

【讨论】:

    【解决方案4】:

    你可以使用ArrayList重载方法toString()

    String tmp=arr.toString();
    PrintWriter pw=new PrintWriter(new FileOutputStream(file));
    pw.println(tmp.substring(1,tmp.length()-1));
    

    【讨论】:

      【解决方案5】:

      如果您想将 ArrayList 对象序列化为文件,以便稍后再次读回它,请使用 ObjectOuputStream/ObjectInputStream writeObject()/readObject(),因为 ArrayList 实现了Serializable。从你的问题中我不清楚你是想这样做还是只写每个单独的项目。如果是这样,那么安德烈的回答会做到这一点。

      【讨论】:

      • 我只想将每个项目添加到文件中,但显示类型不兼容的错误消息。
      【解决方案6】:

      我认为你也可以使用 BufferedWriter :

      BufferedWriter writer = new BufferedWriter(new FileWriter(new File("note.txt")));
      
      String stuffToWrite = info;
      
      writer.write(stuffToWrite);
      
      writer.close();
      

      在此之前记得添加

      import java.io.BufferedWriter;
      

      【讨论】:

      • 这个答案实际上与 ArrayLists of Strings 无关,这是原始发帖人所问的。
      • @Kaiser Keister 但是只需将ArrayLIst 转换为String,这很容易在StringBuilder 循环中完成?
      【解决方案7】:

      如果您需要在一行中创建每个 ArrayList 项目,那么您可以使用此代码

      private void createFile(String file, ArrayList<String> arrData)
                  throws IOException {
              FileWriter writer = new FileWriter(file + ".txt");
              int size = arrData.size();
              for (int i=0;i<size;i++) {
                  String str = arrData.get(i).toString();
                  writer.write(str);
                  if(i < size-1)**//This prevent creating a blank like at the end of the file**
                      writer.write("\n");
              }
              writer.close();
          }
      

      【讨论】:

      • 如果您打开同一个文件并继续写入会怎样?我认为最后一个换行符很有用。
      • 是的,它对附加模式很有用。只需注释 if 条件即可正常工作。