800メガを超えるデータがある場合、データはブレークラインではありません。正規表現の例で作業します。
String.replaceAll("([a-z][a-z][.?!]+) ?([A-Z][a-z]+ )", "$1\r\n$2");
または他の人。
ファイルサイズの場合に正規表現を使用するにはどうすればよいか教えてください。
そのようなサイズに正規表現を使用したくないことは間違いありません。
従来の Unix ツール (sed、perl、awk) を自由に使用できない場合は、Guava のCharMatcherを参照してください。ファイルをバイト配列で読み取り、それを文字列に変換し、CharMatcher を使用して検索します。興味のあるものは何でも、そうであれば、変更された配列を書き込みます。
もちろん、インラインではなく別のファイルに書き込み、変換が正常に実行された場合は元のファイルに名前を変更します。
たとえば、句読点が必要な場合は、を使用できますCharMatcher.anyOf("?!.")
。
データをメモリにロードするのに十分なRAMがある限り、なぜそれができないのかわかりません。32ビットシステム64がより多くのアドレス指定を処理できる場合、制限値はアーキテクチャになると思います。それは、4GB〜制限を使用するときです。
また、Java vm をデフォルトの vm max memory 設定よりもかなり大きく設定する必要があります。例えば
java -Xmx1g myprogram
私はまだそれをお勧めしません。最初にファイルを分割する方法はありませんか。共通の区切りを見つけます。ありがとう