![](/img/trans.png)
[英]Moving file from one directory to another and delete from source directory using java
[英]How to delete a file from a directory using 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的 FileUtils.deleteDirectory()
。
也许您需要对打开文件的组件使用dispose()方法。 可能的情况是,该文件仍然被打开时所在的组件视为已打开并被锁定,因此您必须确保使用dispose()
方法来解决该问题。
双重斜杠似乎令人怀疑。 可以使用单个反斜杠(需要将其引为\\\\
,也可以使用单个反斜杠/
。
另外,您可以在then方法返回时尝试使用delete()
而不是deleteOnExit()
。
除非目录为空,否则无法删除。 如果目录不为空,则必须首先以递归方式删除目录中的所有文件和子目录。
因此,directory.deleteOnExit()在您的情况下不起作用。
另外,我建议您显式删除文件,而不要使用deleteOnExit()。 如果没有关闭与文件相关的所有输入/输出流,它是一个笨拙的函数,不会在退出时删除文件。 始终关闭流并显式删除文件,然后删除目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.