XML ファイルを検証しており、検証の結果に応じて、ファイルを別のフォルダーに移動する必要があります。
XML が有効な場合、バリデーターは値を返し、問題なくファイルを移動できます。スキーマに従って XML が有効でない場合にも、同じことが起こります。
ただし、XML の形式が適切でない場合、バリデーターは例外をスローし、ファイルを移動しようとすると失敗します。ファイルを保持しているメモリのどこかにまだハンドルがあると考えています。ファイルを移動する前に System.gc() を配置しようとしましたが、問題はSystem.gc()
解決しましたが、解決策としてはありません。
コードは次のようになります。StreamSource を作成する File オブジェクトがあります。その後、StreamSource がバリデーターに渡されます。XML が整形式でない場合、SAXException がスローされます。例外処理では、.renameTo() メソッドを使用してファイルを移動します。
sc = new StreamSource(xmlFile);
validator.validate(sc);
私たちが試したキャッチでは
validator.reset();
validator=null;
sc=null;
しかし、まだ.renameTo()
ファイルを移動できません。キャッチを入れればSystem.gc()
、動きは成功します。
誰かがこれなしでこれをソートする方法を教えてもらえますかSystem.gc()?
JAXP と saxon-9.1.0.8 をパーサーとして使用します。
どうもありがとう