私は、try-with-resourcesステートメントの内部にあるFiles.newOutputStreamを使用して書き込み用のファイルを開くjavaプロセスコードを持っています。私はファイルを書き終えた後(すべて同じ方法で書かれています)、閉じました。それらは、ファイルがその内部にあるフォルダとともに削除されます。(削除された)lsofでファイル記述子を開く
私はlsofをして(私はCentOSのを実行している)私は(削除)としてこれらのファイル(および20Kまたは30Kがあるかもしれませんが)に示されていることがわかりlsofの中で見ていると、彼らことを意味していますString folder = "folder"
try(OutputStream out = Files.newOutputStream(Paths.get(folder + '/' + fileName), StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
//...
out.write(buffer);
//...
} catch(IOException excp) {
excp.printStackTrace();
}
FileUtils.forceDelete(new File(folder));
しかし、開いている。 クローズされたファイルがどのように開いたままになっているのか理解できず、結局オープンファイル記述子が多すぎます。だから私は限界を上げることができると知っているが、私は限界を上げるのではなく、適切に閉じたり、ファイルを閉じたりしたい。
ありがとうございました!
... {}最後に{}のtry {}キャッチ外OutputStreamを移動するために忘れました。つまり、これらのファイルを作成し、それらに書き込み、それらを削除するコードです。 – Kenster
@SlavaG、FileUtilsとは何ですか? apache commons io? – lincolnadym
@lincolnadym FileUtils.forceDeleteはApache FileUtilsです。 – SlavaG