如何在java中的文件中循环写入或附加字符串?

Posted

技术标签:

【中文标题】如何在java中的文件中循环写入或附加字符串?【英文标题】:How to write or append string in loop in a file in java? 【发布时间】:2012-06-19 11:55:34 【问题描述】:

我在处理非常大的数据集时遇到内存问题,并且使用 char[] 和字符串时出现内存泄漏,不知道为什么!所以我正在考虑将一些处理后的数据写入文件而不是存储在内存中。因此,我想使用循环将 arrayList 中的文本写入文件中。首先,程序将检查当前工作目录中是否已存在特定文件,如果不存在,则创建具有特定名称的文件并开始使用循环逐行从 arrayList 写入文本;如果文件已经存在,则打开文件并在文件的最后一行(在新行中)之后附加第一个数组值,并开始逐行在循环中写入其他数组值。

任何人都可以建议我如何在 Java 中做到这一点吗?我的 Java 不太好,所以请尽可能提供一些示例代码。

谢谢!

【问题讨论】:

任何重新搜索或粘贴您开发的代码的努力都将有助于为您提供解决方案或建议。 您可能想看看 'StringBuilder' 类,以获得更好的字符串处理性能。 @E.Ar,只有在循环内附加 String 时,性能才会有所不同。在循环之前显式声明 StringBuilder 是获得良好结果的必要条件,省略这将导致在每次迭代时创建 StringBuilders 对象。但是没有循环连接字符串默认转换为 StringBuilders(在字节码中),从 java 1.5 开始,所以在简单的情况下不需要用 StringBuilders.append(string) 替换 + 【参考方案1】:

//在主目录中

List<String> SarrayList = new ArrayList<String>(); 
.....

用内容填充它

enter content to SarrayList here.....

写入文件

appendToFile (SarrayList);

.....

public void appendToFile (List<String> SarrayList) 

      BufferedWriter bw = null;
      boolean myappend = true;
      try 
         bw = new BufferedWriter(new FileWriter("myContent.txt", myappend));
         for(String line: SarrayList ) 
         bw.write(line);
         bw.newLine();
         
         bw.flush();
       catch (IOException ioe) 
        ioe.printStackTrace();
       finally  
        if (bw != null) try 
        bw.close();
         catch (IOException ioe2) 
        // ignore it  or write notice
        
      

    

【讨论】:

【参考方案2】:

试试这个

ArrayList<String> StringarrayList = new ArrayList<String>(); 
    FileWriter writer = new FileWriter("output.txt", true); 
    for(String str: StringarrayList ) 
      writer.write(str + "\n");
    
    writer.close();

【讨论】:

在你的例子中使用循环没有意义:) 如果有错误,您可以通过反馈和建议来纠正它,而不仅仅是微笑我们不是在互相竞争,我们只是在互相帮助。 @dantuch:enhanced-for 有什么问题? @Makoto 不带 for,错误是传递给 write 方法的参数。它应该是单个字符串,而不是一遍又一遍的整个列表。我希望@MMK 在我发表评论后能发现这一点。并且走得更远-最好不要将列表声明为ArrayList,而是将其声明为List【参考方案3】:

我不确定您不确定该过程的哪些部分,所以我将从头开始。

Serializable 接口允许您将对象写入文件。任何实现Serializable 的对象都可以传递给ObjectOutputStream 并写入文件。

ObjectOutputStream 接受 FileOutputStream 作为参数,它可以附加到文件中。

ObjectOutputstream outputStream = new ObjectOutputStream(new FileOutputStream("filename", true));
outputStream.writeObject(anObject);

需要处理一些异常处理,但这些是基础。注意anObject 应该实现Serializable

读取文件非常相似,除了它使用我提到的类的输入版本。

【讨论】:

以上是关于如何在java中的文件中循环写入或附加字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Java 如何使用输入流和输出流 将txt文件中的某一行数据删除?

如何将所有系统输出写入JAVA中的文件?

C++ 如何将一个文件里的数据写入到另一个文件里?

如何在现有的 Hql 或 SQL 查询中应用“With UR”子句?如何在我的查询为字符串格式的 Java 文件中附加它

将浮点数组写入和附加到 C++ 中 hdf5 文件中的唯一数据集

如何在通过 Pandas 在 csv 中写入多个 for 循环的数据时在单个单元格中附加数据?