JavaでJsonフォーマットに書き込もうとしましたが、ファイルサイズが1GBを超えるとNullPointerExceptionが発生しました。誰でもこの問題を解決するのに役立つことができますか?ファイルサイズが1GBを超えると、Gson.toJsonがNullPointerExceptionをスローする
コードはJsonファイルを生成し続け、ファイルのサイズは増加し続けます。ファイルサイズが1GBを超えると、コードは次のように例外をスローします。テスト用に異なるデータセットを使用していたため、データの問題ではないと思います。私の推測では、JavaのGson.toJsonにはサイズ制限があるということです。
私のコードは次のとおりです。
private HashMap<String,HashSet<Token>> tokenCounter = new HashMap<String,HashSet<Token>>();
....
private void writeToFile(){
try {
PrintWriter out = new PrintWriter(outputFileName);
out.println(gson.toJson(tokenCounter));
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
それはスロー例外がある:コメントで書式設定の問題を回避する答えとして投稿
java.lang.NullPointerException
at java.lang.String.<init>(String.java:301)
at java.lang.StringBuffer.toString(StringBuffer.java:790)
at java.io.StringWriter.toString(StringWriter.java:204)
at com.google.gson.Gson.toJson(Gson.java:481)
at com.google.gson.Gson.toJson(Gson.java:460)
at com.ebay.classification.discovery.DailyDiscovery.writeToFile(DailyDiscovery.java:181)
at com.ebay.classification.discovery.DailyDiscovery.run(DailyDiscovery.java:169)
at com.ebay.classification.discovery.TestDailyDiscoveryContinue.run(TestDailyDiscoveryContinue.java:142)
at com.ebay.classification.discovery.TestDailyDiscoveryContinue.main(TestDailyDiscoveryContinue.java:245)
....あなたが大にStringWriterでNPEを取得し、なぜ質問に答える、しかし、率直に言って、何をやっていることは不合理ではありません、スタックトレースは、 'charは[]'から渡さ示し['StringBuffer.toString'](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/lang/StringBuffer.java#StringBuffer.toString%28% 29)は "ヌル" ... –
はい、私は奇妙な感じもありました。私はいくつかの異なるデータセットを試してみましたが、同じ例外が1GBポイントで出てきました。 – Long
@jlordo配列の作成に 'int'引数があるので不可能です。 'int'はオーバーフローする可能性がありますが、' NegativeArraySizeException'がスローされます。 –