0

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

任何人都可以建议我如何在 Java 中做到这一点?我在 Java 方面不是那么好,所以如果可能的话,请提供一些示例代码。

谢谢!

4

3 回答 3

0

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

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

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

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

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

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

于 2012-06-16T21:45:11.137 回答
0

尝试这个

ArrayList<String> StringarrayList = new ArrayList<String>(); 
    FileWriter writer = new FileWriter("output.txt", true); 
    for(String str: StringarrayList ) {
      writer.write(str + "\n");
    }
    writer.close();
于 2012-06-16T21:39:53.153 回答
-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
        }
      }

   } 
于 2012-06-16T23:17:37.597 回答