在运行时查找路径以删除文件

时间:2010-12-20 00:41:50

标签: java file path delete-file

代码基本上允许用户输入他们想要删除的文件的名称,该名称保存在变量“catName”中,然后执行以下代码以尝试查找文件的路径并将其删除。但是,它似乎不起作用,因为它不会以这种方式删除文件。但是,如果输入整个路径,是否会删除文件。

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

3 个答案:

答案 0 :(得分: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关于如何实现这一点。

答案 1 :(得分:0)

根据您要删除的文件及其存储位置,您可能希望Java能够神奇地找到该文件。

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

如果程序在C:\ TestProg \中运行,则File对象指向位置C:\ TestProg \ test.txt中的文件。由于文件对象不仅仅是一个帮助器,因此指向不存在的文件没有问题(File可用于创建新文件)。

如果您尝试删除特定位置的文件,则需要将文件夹名称添加到文件路径中,无论是规范还是相对于执行位置。

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

现在file正在查看C:\ TestProg \ myfiles \ test.txt。

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

答案 2 :(得分:0)

您提供的代码片段可以通过以下方式进行压缩:

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

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

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