最近、アプリケーション コードを見直したところ、コードに 1 つの問題が見つかりました。
/**
* truncate cat tree(s) from the import file
*/
private void truncateCatTreesInFile(File file, String userImplCode) throws Exception
{
String rowStr = null, treeCode = null;
BufferedReader reader = new BufferedReader(new FileReader(file));
rowStr = reader.readLine(); // skip 1st row - header
Impl impl;
List<String> row = null;
Set<String> truncatedTrees = new HashSet<String>();
while ((rowStr = reader.readLine()) != null)
{
row = CrudServiceHelper.getRowFromFile(rowStr);
if (row == null) continue;
impl = getCatImportImpl(row.get(ECatTreeExportImportData.IMPL.getIndex()), userImplCode);
treeCode = row.get(ECatTreeExportImportData.TREE_CODE.getIndex());
if(truncatedTrees.contains(treeCode)) continue;
truncatedTrees.add(treeCode);
CatTree catTree = _treeDao.findByCodeAndImpl(treeCode, impl.getId());
if(catTree!= null) _treeDao.makeTransient(catTree);
}
_treeDao.flush();
}
上記のコードを見ると、「リーダー」は閉じられていませんでした。問題があるのではないかと思っていましたが、実際には問題なく動作し、Tomcat でファイルを削除できます。
javax.servlet.context.tempdir>
[java] 2013-03-27 17:45:54,285 INFO [org.apache.struts2.dispatcher.Dispatch
ええと] -
基本的に、私がやろうとしているのは、ブラウザから 1 つのファイルをアップロードし、そのファイルに基づいて SQL を生成して、データをデータベースに挿入することです。すべて完了したら、ファイルを削除します。
このコードが正常に機能することに驚いています。誰かここにアイデアがありますか? ググってみましたが、さっぱりわかりませんでした。
ありがとう、ジャック