如何解决如何使用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 举报,一经查实,本站将立刻删除。