繁体   English   中英

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

[英]How to write or append string in loop in a file in java?

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

任何机构都可以建议我如何在 Java 中做到这一点? 我不太擅长 Java,所以如果可能,请提供一些示例代码。

谢谢!

试试这个

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

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

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

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

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

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

读取文件非常相似,只是它使用了我提到的类的 Input 版本。

// 在主

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
        }
      }

   } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM