Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java连接不起作用_Java_String_Concatenation_String Concatenation - Fatal编程技术网

Java连接不起作用

Java连接不起作用,java,string,concatenation,string-concatenation,Java,String,Concatenation,String Concatenation,这段代码应该获得绝对路径,从首选项文件中追加一个字符串,然后追加“.json”以匹配必要的文件。我尝试使用“+”连接字符串,但它提供的输出与StringBuilder.append()相同 这是我的控制台输出: =t-br =om extensão/home/mateus/BrinoBuildScript/Filesx64/lib/ling/pt-br =home/mateus/BrinoBuildScript/Filesx64/lib/ling/pt-br =home/mateus/Brino

这段代码应该获得绝对路径,从首选项文件中追加一个字符串,然后追加“.json”以匹配必要的文件。我尝试使用“+”连接字符串,但它提供的输出与StringBuilder.append()相同

这是我的控制台输出:

=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)

一个变量如何能有三种不同的控制台输出?我该怎么做才能解决这个问题呢?

Mateus。您的控制台输出正在打印第一列上行的最后一个字符。正确呈现后,控制台输出应如下所示:

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,您可以尝试使用File类组合路径:

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,则可以使用Paths API(它处理特定于平台的路径分隔符):

请参见以下路径API的Java教程:


为什么有三种不同的输出?你期望哪种输出?输出是一样的,除了在该变量的第一个输出中预加的“com extensão”文本……而且你从来没有附加.json或者你期望什么?我没有得到你的输出,
com extensão
=om extensão
(像每一行)那样打印,然后,在
语言中,最后一个字符(
=
)消失。但是对于其余的,对我来说似乎没问题(从我读的代码来看),Mateus,如果你允许的话,请避免使用带有葡萄牙语特殊字符的文件和文件夹,如ão,í,ç等等。与名称包含空格的文件和文件夹相同。。。这只会给我们制造麻烦,开发者。请试试这个,告诉我发生了什么。但是:不要在变量名、函数名、类和方法中使用这些字符。来自巴西的问候。谢谢,我们来看看paths API。我成功地将.json与string.format(“%s.%s”)连接起来
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());
final Path p = Paths.get(path, "lib", "ling", PrefManager.getPref("lingua"));
System.out.println(p);