文件路径无效,但前提是我用字段构建文件名

Invalid file path, but only if I build the file name with a field

下面给我一个FileNotFoundException: Invalid file path

String fileName = "folder/file" + "." + this.ext;
try {
  File file = new File(fileName);
} catch(Exception e){
}

其中 this.ext 之前已设置为 "txt"

经过一番尝试,我发现这完全没问题。

String ext = "txt";
String fileName = "folder/file" + "." + ext;
try {
  File file = new File(fileName);
} catch(Exception e){
}

为什么我不能使用字段?

没有理由不能使用字段,即 this.ext。如果你把调试点放在下面一行,你会发现 this.ext 没有设置为 "txt"

String fileName = "folder/file" + "." + this.ext;

如果您不习惯使用调试器,只需将以下行放在上面这行之前,您就可以找到问题所在:

System.out.println("this.ext="+this.ext);

在调试器中查看后,看起来我的字段的值为“[=16=][=16=][=16=][=16=][=16=]txt”(即 NUL ascii 字符)。

Java 将“\0”视为空字符串,因此我的 println 语句没有向我显示问题。

在大学学习 4 年多来,我一定是第一次需要使用调试器!