首次连接到 derby 时,文件夹/文件删除不起作用

更新:看起来 system.exit(0) 正在解锁文件并允许第二个代码示例工作。如何在不调用 system.exit() 的情况下解锁文件?


我有两个代码示例。首先创建一个数据库,关闭连接,然后尝试删除数据库。尝试删除目录文件夹时失败。


第二个代码示例只是删除文件夹。它有效并且与第一个代码示例中使用的代码相同。


我认为可能存在某种类型的时间问题。即使在第一个示例中发生删除之前关闭连接,我想知道删除操作是否由于某些潜在连接而不起作用。


第一个代码示例:


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);


    }



在第一个示例中我需要做些什么来释放文件夹/文件以便能够删除它们?


动漫人物
浏览 152回答 1
1回答

慕少森

嗯,这需要大量的挖掘。原来你必须关闭数据库才能删除文件夹。实际上不需要关闭连接,因为关闭数据库将关闭所有连接。只需调用DriverManager.getConnection("jdbc:derby:;shutdown=true"); ,您就可以参加比赛了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java