2017-02-08 9 views
0

このコードは、絶対パスを取得し、環境設定ファイルから文字列を追加し、必要なファイルと一致するように ".json"を追加する必要があります。私は、文字列を連結するには、「+」を使ってみましたが、それはこれが私のコンソール出力であるJava連結が機能しない

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

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) 

がどのように変数が3を持つことができますコンソールに異なる出力がありますか?これを解決するにはどうすればよいですか?

+0

なぜ三つの異なる出力?どの出力を期待していますか? – IQV

+0

出力は、その変数の最初の出力で準備している "comextensão"テキスト以外は同じです... – john16384

+0

また、.jsonを追加することはありませんか? – Xander

答えて

0

マテウス。あなたのコンソール出力は、最初の列の行の最後の文字を表示しています。正しくレンダリングされ、お使いのコンソール出力は次のようになります。

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の古いバージョンを使用している場合は、OU 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の最新バージョンを使用している場合は、プラットフォームに対応している(パスAPIを使用することができます固有のパス区切り):

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

+0

、ありがとう、パスAPIを見ていきます。私はstring.format( "%s。%s")で.jsonの連結を行うことができました –