2010-12-20 31 views
0

的代码基本上可以让用户输入他们想删除这是在变量“catName”举行,然后执行,试图找到下面的代码文件的名称并删除它的路径。但是,它似乎不起作用,因为它不会以这种方式删除文件。但是,如果我输入整个路径,是删除文件。查找路径在运行时删除文件

File file = new File(catName + ".txt"); 
String path = file.getCanonicalPath(); 
File filePath = new File(path); 
filePath.delete(); 

回答

1

如果您要删除在同一目录中,该方案正在执行中的文件,你不需要指定路径,但如果它不是在你的程序在运行相同的目录,你期待的程序来知道你的文件在哪个目录下,这是不会发生的。

关于上面的代码:下面的例子都做同样的事情。假设你的路径是/ home/kim/files,那就是你执行程序的地方。

// deletes /home/kim/files/somefile.txt 
boolean result = new File("somefile.txt").delete(); 

// deletes /home/kim/files/somefile.txt 
File f = new File("somefile.txt"); 
boolean result = new File(f.getCanonicalPath()).delete(); 

// deletes /home/kim/files/somefile.txt 
String execPath = System.getProperty("user.dir"); 
File f = new File(execPath+"/somefile.txt"); 
f.delete(); 

换句话说,您需要指定可删除文件所在的路径。如果它们位于不同且不断变化的位置,则必须为文件实施文件系统搜索,如果文件系统很大,则可能需要很长时间。 Here's an article关于如何实现。

0

取决于你想要什么要删除的文件,并存储在何处,机会是你期待的Java神奇地找到该文件。

String catName = 'test' 
File file = new File(catName + '.txt'); 

如果程序运行于说C:\ TestProg \,然后File对象指向的位置下的文件:\ TestProg \ test.txt的。由于文件对象更像是一个帮手,因此它不存在指向不存在文件的问题(可以使用File来创建新文件)。

如果你想删除一个文件,是在特定的位置,那么你需要的文件夹名称,预先准备的文件路径,无论是规范地,或相对于执行位置。

String catName = 'test' 
File file = new File('myfiles\\'+ catName +'.txt'); 

现在file正在寻找在C:\ TestProg \ myfiles的\ test.txt的。

如果你想找到那个文件的任何地方,那么你需要一个递归搜索算法,将遍历文件系统。

0

您提供可能被压缩到这个工作的一段代码:

boolean success = new File(catName + ".txt").delete(); 

如果删除成功的success变量将是真实的。如果您没有提供完整的绝对路径(例如C:\Temp\test.txt文件为C:\Temp\test),则程序将假定该路径与其当前工作目录相关 - 通常是其启​​动位置的目录。

您应该提供一个绝对路径,或相对于当前目录的路径。您的程序不会尝试找到要在其他地方删除的文件。