0

非常に大きなデータセットを操作していて、char[] と文字列でメモリ リークが発生しているため、メモリに問題があります。理由はわかりません。そのため、処理されたデータをメモリに保存するのではなく、ファイルに書き込むことを考えています。そこで、ループを使用して arrayList からテキストをファイルに書き込みたいと思います。最初に、プログラムは特定のファイルが現在の作業ディレクトリに既に存在するかどうかを確認し、存在しない場合は特定の名前でファイルを作成し、ループを使用して arrayList から行ごとにテキストの書き込みを開始します。ファイルが既に存在する場合は、ファイルを開き、ファイルの最後の行 (新しい行) の後に最初の配列値を追加し、ループ内の他の配列値を行ごとに書き込み始めます。

Javaでこれを行う方法を教えてくれる人はいますか? 私はJavaが得意ではないので、可能であればサンプルコードを提供してください。

ありがとう!

4

3 に答える 3

0

プロセスのどの部分が不明なのかわからないので、最初から始めます。

インターフェイスを使用すると、Serializableオブジェクトをファイルに書き込むことができます。を実装する任意のオブジェクトをSerializableに渡しObjectOutputStream、ファイルに書き込むことができます。

ObjectOutputStreamFileOutputStreamファイルに追加できる引数として を受け入れます。

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 に答える