删除中间有空格的文件名

时间:2014-02-25 07:29:37

标签: java file

我在几篇帖子中读到我们通过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

的名称

感谢大家的快速转变。

2 个答案:

答案 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);