2

XML に 300 MB のデータを書き込まなければならない状況に直面しています。Streams を使用して、OutOfMemory例外に直面することなくタスクを完全に実行しました。

ここで、FileOutputStreamオブジェクトを実際のデータに変換し、それStringを他のメソッドとして渡す必要があります。

試してみましたが、期待した結果が得られません。オブジェクトを文字列値に変換する方法をFileOutputStream教えてください。

4

3 に答える 3

3

String が大きすぎて一度にメモリに保持しようとすると、使用しているリーダーに関係なく、常にOutOfMemoryErrorが発生します。

したがって、問題はリーダーではありません。問題は String オブジェクト (渡したいオブジェクト) です。

このような巨大なファイルを文字列変数として保存/渡す必要がある場合は、アーキテクチャに間違いなく問題があります。

あなたの間違いは、XML テキストを Java String 変数に入れようとしているということです。大きなオブジェクトをメモリに保存することは避けるべきです。これが重要なポイントです。

通常、テキストは圧縮率 0.1 ~ 0.01 で圧縮されます。

ZipOutputStream/ZipInputStream (または同様のライブラリ) を使用してみてください。これらは、ストリームのファイルへの読み取り/書き込みで問題なく動作します。

私の実践では、巨大な XML ファイルで完全に機能します。

于 2013-04-02T16:16:02.850 に答える