此问题与Concatenating null strings in Java
非常相似但我的问题有所不同。
我想建立一个文件的绝对路径:
String path = properties.get("path"); // returns /home/myuser/relativepath/ , ends with bar /
String file = currentFile; // currentFile values "file.txt"
String result = path + file; // this results in /home/myuser/relativepath/nullfile.txt
为什么有'null'文字?这就是我的申请现在不起作用的原因。
我在Windows和Linux中对它进行了审核。 在Windows中,它完美运行。 在Linux中,我有这个问题。
我上传了属性文件,然后用vi命令编辑。 这可能是问题吗? 我不应该用这种方式生成绝对路径,并在Java中使用File.Separator属性吗?
编辑:我已经通过详细步骤发布了我的最终答案。我希望它会有用。答案 0 :(得分:1)
我的赌注(虽然我没有看到Java这样做)是你的属性文件中有某种类型的null-ish字符(例如回车),Windows在操作系统级别处理,因此Java / Properties不会看到了。
作为第一遍,请尝试打印path
字符串的长度和最后几个字符,例如:
for(int i = Math.max(0, path.length()-5); i < path.length(); i++) {
System.out.print(path.charAt(i)+":"+((int)path.charAt(i))+" ");
}
System.out.println(path.length());
愿意在Linux上赌最后一个角色,这不是你所期望的。然后,正确的修复就是清理属性文件,使其在两个操作系统上都兼容。
答案 1 :(得分:1)
嗯,解决我的问题的完整而详细的步骤是这些(也许任何一个都没有必要,但我更愿意全部写出来):
将变量与:
连接起来String result = path + File.separator + file;
我希望这会有用。谢谢大家的建议。 此致
答案 2 :(得分:0)
你期待什么?
你正在做String result = path + result;
int a = 1 + a
类似......不要使用变量来初始化
(如果你得到这个输出,那首先不能成为你的代码。)
答案 3 :(得分:0)
result
是path+file
:
String path = properties.get("path");
String file = currentFile;
String result = path + file;
^
change here
结果是:/home/myuser/relativepath/file.txt