我在几篇帖子中读到我们通过java删除文件,名称中有空格,我可以使用delete()方法(Java 6)。例如:
File f = new File("/mnt/test ex.txt");
f.delete();
但当我正在制作像这样的文件对象时:
StringBuilder fullFileName = "C:/Temp_Folder\week month.xlsx";
fileToRead = new File(fullFileName.toString());
fileToRead.delete();
我无法这样做而且我得到以下例外:
java.io.FileNotFoundException:“C:\ Temp_Folder \ week month.xlsx”(文件名,目录名或卷标语法不正确) 我在这里失踪了什么?
P.S。 :我尝试在文件名上使用引号也没有成功
fileToRead = new File('"'+fullFileName.toString()+'"');
编辑:我已经编辑了stringBuilder上的引号(我的一个类型)。实际上StringBuilder对象是一个参数,我们附加对象来获取实际名称。我刚刚给你最后的声明。 至于周month.xlsx,这是文件的名称,而不是两个不同的变量(这意味着文件名之间有空格;它可能类似于
使用spaces.xlsx
的名称感谢大家的快速转变。
答案 0 :(得分:1)
根据例外情况:
java.io.FileNotFoundException: "C:\Temp_Folder\week month.xlsx"
您正在寻找以下文件:
"C:\Temp_Folder\week month.xlsx"
注意报价!该文件不存在。
您必须修改代码以确保您的文件名不包含周围的引号(不需要)。
即。 (假设这里有java 6)
File file = new File("C:\\Temp_Folder\\week month.xlsx");
file.delete();
注意,反斜杠是一个转义字符,因此它在字符串中加倍。
答案 1 :(得分:1)
对于带有Java空格的文件名,或者任何其他带有文件访问API的编程语言,您不需要特定的处理。
不要将Java与命令解释器混合使用。
在您的情况下,您的File
应声明为:
new File("C:\\Temp_Folder\\name with spaces.xlsx")
就是这样。
如果Java报告FileNotFoundException
,那么就会出现问题。遗憾的是,File
API已被破坏,如果文件存在但您无法读取此异常,则可以抛出此异常。看看完整的堆栈跟踪。
帮自己一个忙:使用Java 7和新的Files
API。使用此API,异常实际上是有意义的 - 并且删除操作也不会“默默地”失败。
至于构建文件名本身,您可以使用String.format()
:
final String filename = String.format("C:\\Temp_Folder\\%s %s.xlsx", month, week);