更新:看起來 system.exit(0) 正在解鎖文件并允許第二個代碼示例工作。如何在不調(diào)用 system.exit() 的情況下解鎖文件?我有兩個代碼示例。首先創(chuàng)建一個數(shù)據(jù)庫,關閉連接,然后嘗試刪除數(shù)據(jù)庫。嘗試刪除目錄文件夾時失敗。第二個代碼示例只是刪除文件夾。它有效并且與第一個代碼示例中使用的代碼相同。我認為可能存在某種類型的時間問題。即使在第一個示例中發(fā)生刪除之前關閉連接,我想知道刪除操作是否由于某些潛在連接而不起作用。第一個代碼示例:import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import org.apache.commons.io.FileUtils;import java.io.*;public class DBtest{ public static void main(String[] args) { System.out.print('\u000C'); String db = "test2"; File file = new File(db); Connection conn = getDB(db); try{ if (conn != null) conn.close(); System.out.println("connection closed " ); }catch(SQLException e){ System.out.println("connection NOT closed " + e); System.exit(0); } deleteDirectory(file); System.exit(0); } public static boolean deleteDirectory(File directoryToBeDeleted){ File[] allContents = directoryToBeDeleted.listFiles(); if (allContents != null) { for (File file : allContents) { deleteDirectory(file); } } directoryToBeDeleted.setWritable(true); System.out.println(directoryToBeDeleted.toString()); return directoryToBeDeleted.delete(); } 第二個代碼示例:import org.apache.commons.io.FileUtils;import java.io.*;public class DirectoryDelete{ public static void main(String[] args){ System.out.println('\u000C'); File file = new File("test2"); deleteDirectory(file); }在第一個示例中我需要做些什么來釋放文件夾/文件以便能夠刪除它們?
1 回答

慕少森
TA貢獻2019條經(jīng)驗 獲得超9個贊
嗯,這需要大量的挖掘。原來你必須關閉數(shù)據(jù)庫才能刪除文件夾。實際上不需要關閉連接,因為關閉數(shù)據(jù)庫將關閉所有連接。只需調(diào)用DriverManager.getConnection("jdbc:derby:;shutdown=true");
,您就可以參加比賽了。
添加回答
舉報
0/150
提交
取消