代码基本上允许用户输入他们想要删除的文件的名称,该名称保存在变量“catName”中,然后执行以下代码以尝试查找文件的路径并将其删除。但是,它似乎不起作用,因为它不会以这种方式删除文件。但是,如果输入整个路径,是否会删除文件。
File file = new File(catName + ".txt");
String path = file.getCanonicalPath();
File filePath = new File(path);
filePath.delete();
答案 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
),程序将假定路径相对于其当前工作目录 - 通常是启动它的目录。
您应该提供绝对路径或相对于当前目录的路径。您的程序不会尝试在其他任何地方找到要删除的文件。