- 682 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 00:45:54 ]
- FileInputStreamからFileChannelを取得し、そのFileChannelでmap()を実行すると、ストリームやチャネルをクローズしても元ファイル(FileInputStreamのソース)を削除できません。
原因はMappedByteBufferによって使用中になってしまうからという単純なものなのですが、解決策が FileInputStream fis = new FileInputStream(input); FileChannel fc = fis.getChannel(); ByteBuffer buf = fc.map(); .... buf = null; System.gc(); input.delete(); これくらいしか思いつきませんでした。 何かいい方法はないでしょうか?
|

|