微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Java从目录中删除文件?

如何解决如何使用Java从目录中删除文件?

| 谁能告诉我在打开并加载到数据库后如何删除目录中的文件? 这是我的代码
public static void main(String[] args) throws sqlException{

        int Count= 0;

        File directory = new File(\"C://Documents and Settings//welcome//My Documents//Bluetooth Exchange Folder\");
        directory.deleteOnExit();
        File files[] = directory.listFiles();

        for(int index = 0; index < files.length; index++){

            try {

                FileReader inp = new FileReader (files[index]);
                BufferedReader buf = new BufferedReader(inp);
                String strLine;

                try {
                    while ((strLine = buf.readLine()) != null)
                    {
                        System.out.println(strLine);

                        String[] dbColumnValues = strLine.split(\"%\");

                        Connect.DoInsertIntoDB(Long.parseLong(dbColumnValues[0]),dbColumnValues[1],dbColumnValues[2],dbColumnValues[3]);
                        Count++;
                        System.out.println(Count + \" Row(s) are inserted into the Database\");
                        GenHTML.gen();

                    }

                } 
但是文件不会在目录中删除。 请谁能纠正我的代码中的错误? [当前,我正在测试目录中的3个文件。每个文件加载到数据库后,我希望每个文件都从目录中删除。] 提前致谢!     

解决方法

最好在代码中明确。
File files[] = directory.listFiles();
for(int index = 0; index < files.length; index++){
{
   // Process files[index]
   // ...
   boolean wasDeleted = files[index].delete();
   if (!wasDeleted)
   {
     // Deal with error
   }
}
另外,使用完文件句柄后,还需要关闭它们
FileReader inp = new FileReader (files[index]);
try
{
  // ...
}
finally
{
  inp.close();
}
    ,
File.delete()
File.deleteOnExit()
方法只会删除目录为空的目录。在处理文件时,您必须从目录中删除文件(并确保没有子目录)。或者,您可以在处理结束时使用Apache Commons IO中的ѭ5。     ,双重斜杠似乎令人怀疑。可以使用单个反斜杠(您需要将其引为
\\\\
),也可以使用单个反斜杠(
/
)。 另外,当then方法返回时,您可以尝试使用
delete()
,而不是
deleteOnExit()
。     ,根据API:   请求在虚拟机终止时删除此抽象路径名表示的文件或目录。 但是,在您的代码中,您正在将该函数视为立即删除目录。     ,您无法删除目录,除非目录为空。如果目录不为空,则必须首先递归删除目录中的所有文件和子目录。 因此,directory.deleteOnExit()在您的情况下不起作用。 另外,我建议您显式删除文件,而不要使用deleteOnExit()。如果没有关闭与文件有关的所有输入/输出流,它是一个哑函数,不会在退出时删除文件。始终关闭流并显式删除文件,然后删除目录。     ,也许您需要对打开文件的组件使用dispose()方法。可能的情况是,该文件仍然被打开时所在的组件视为已打开并被锁定,因此您必须确保使用
dispose()
方法来解决该问题。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。