Java 串联无效
Java concatenation not working
此代码应获取绝对路径,从首选项文件附加一个字符串,然后附加“.json”以匹配必要的文件。我尝试使用“+”连接字符串,但它给出的输出与 StringBuilder.append()
相同
StringBuilder pt= new StringBuilder(path);
pt.append(System.getProperty("file.separator"));
pt.append("lib");
pt.append(System.getProperty("file.separator"));
pt.append("ling");
pt.append(System.getProperty("file.separator"));
String lingua =PrefManager.getPref("lingua")+("=");
System.out.println(lingua);
pt.append(lingua);
System.out.println("com extensão"+pt.toString());
String file = pt.toString();
System.out.println(file);
System.out.println(file);
Object obj = parser.parse(new FileReader(file));
这是我的控制台输出:
=t-br
=om extensão/home/mateus/BrinoBuildScript/Filesx64/lib/ling/pt-br
=home/mateus/BrinoBuildScript/Filesx64/lib/ling/pt-br
=home/mateus/BrinoBuildScript/Filesx64/lib/ling/pt-br
java.io.FileNotFoundException: /home/mateus/BrinoBuildScript/Filesx64/lib/ling/p= (No such file or directory)
一个变量怎么能有三个不同的输出到控制台?我应该怎么做才能解决这个问题?
马特乌斯。您的控制台输出在第一列打印该行的最后一个字符。正确呈现后,您的控制台输出应如下所示:
pt-br=
com extensão\home\mateus\BrinoBuildScript\Filesx64\lib\ling\pt-br=
\home\mateus\BrinoBuildScript\Filesx64\lib\ling\pt-br=
\home\mateus\BrinoBuildScript\Filesx64\lib\ling\pt-br=
在此输出中,您可以看到字符串 file
已正确设置(尽管您可能不希望尾随“=”)。
虽然您小心使用系统路径分隔符,但连接有点笨拙。如果您使用的是旧版本的 Java,您可以尝试使用文件 class:
来组成您的路径
final String path = "\home\mateus\BrinoBuildScript\Filesx64";
final File libFolder = new File(path, "lib");
final File lingFolder = new File(libFolder, "ling");
final File languageFolder = new File(lingFolder, PrefManager.getPref("lingua"));
System.out.println(languageFolder.getAbsolutePath());
如果您使用的是最新版本的 Java,您可以使用路径 API(它处理 platform-specific 路径分隔符):
final Path p = Paths.get(path, "lib", "ling", PrefManager.getPref("lingua"));
System.out.println(p);
请在此处查看有关路径 API 的 Java 教程:
https://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
此代码应获取绝对路径,从首选项文件附加一个字符串,然后附加“.json”以匹配必要的文件。我尝试使用“+”连接字符串,但它给出的输出与 StringBuilder.append()
相同 StringBuilder pt= new StringBuilder(path);
pt.append(System.getProperty("file.separator"));
pt.append("lib");
pt.append(System.getProperty("file.separator"));
pt.append("ling");
pt.append(System.getProperty("file.separator"));
String lingua =PrefManager.getPref("lingua")+("=");
System.out.println(lingua);
pt.append(lingua);
System.out.println("com extensão"+pt.toString());
String file = pt.toString();
System.out.println(file);
System.out.println(file);
Object obj = parser.parse(new FileReader(file));
这是我的控制台输出:
=t-br
=om extensão/home/mateus/BrinoBuildScript/Filesx64/lib/ling/pt-br
=home/mateus/BrinoBuildScript/Filesx64/lib/ling/pt-br
=home/mateus/BrinoBuildScript/Filesx64/lib/ling/pt-br
java.io.FileNotFoundException: /home/mateus/BrinoBuildScript/Filesx64/lib/ling/p= (No such file or directory)
一个变量怎么能有三个不同的输出到控制台?我应该怎么做才能解决这个问题?
马特乌斯。您的控制台输出在第一列打印该行的最后一个字符。正确呈现后,您的控制台输出应如下所示:
pt-br=
com extensão\home\mateus\BrinoBuildScript\Filesx64\lib\ling\pt-br=
\home\mateus\BrinoBuildScript\Filesx64\lib\ling\pt-br=
\home\mateus\BrinoBuildScript\Filesx64\lib\ling\pt-br=
在此输出中,您可以看到字符串 file
已正确设置(尽管您可能不希望尾随“=”)。
虽然您小心使用系统路径分隔符,但连接有点笨拙。如果您使用的是旧版本的 Java,您可以尝试使用文件 class:
来组成您的路径final String path = "\home\mateus\BrinoBuildScript\Filesx64";
final File libFolder = new File(path, "lib");
final File lingFolder = new File(libFolder, "ling");
final File languageFolder = new File(lingFolder, PrefManager.getPref("lingua"));
System.out.println(languageFolder.getAbsolutePath());
如果您使用的是最新版本的 Java,您可以使用路径 API(它处理 platform-specific 路径分隔符):
final Path p = Paths.get(path, "lib", "ling", PrefManager.getPref("lingua"));
System.out.println(p);
请在此处查看有关路径 API 的 Java 教程:
https://docs.oracle.com/javase/tutorial/essential/io/pathOps.html