2016-04-16 21 views
4

この2つのOS用にJavaでファイルパスを作成する最適なソリューションは何ですか?アプリケーションは、このosのために使用される、私は普遍的な文字列を作成する必要があります。例えばJavaファイルパスWindows/Linux

:Linuxの場合 :Windowsの場合

public File folderTxt = new File("/home/romankooo/work/txt/"); 

public File folderTxt = new File("C:\\PDFMalwareDataAnalyser\\Txt\\"); 

それとも、このOSのための2つの.jarファイルを生成するための最適なソリューションです。

ありがとうございます。

+0

回答はフォルダの目的によって異なります。一時ファイルを作成しますか?設定ファイルを提供していますか?データファイルを読み書きする?ユーザーの設定を保存していますか? Etcetera。これらの目的のそれぞれについて、明確に定義されたクロスプラットフォームソリューションがあります。 – BalusC

答えて

0

は、このコード行を試してみて、文字列に応じてあなたはOS名を取得するために使用System.getProperty("os.name")

System.getproperty("os.name"); 
+0

Okey、thanks.in linuxこのアプリケーションをWindowsで実行すると、フォルダに書き込み権限を変更できなくなる – bilinxe

1

あなたのコードを調整することができ返し、それに依存しては、リソースへのパスを設定します。

String resourcePath = null; 
switch (System.getProperty("os.name")) { 
      case "Linux": resourcePath = "/home/romankooo/work/txt/"; 
        break; 
      case "Windows": resourcePath = "C:\\PDFMalwareDataAnalyser\\Txt\\"; 
        break; 
} 
+0

不正な方法です。 @microtoneがここで他の答えで述べたように、どこでもスラッシュ( '/')や 'File.separator'を使うのが良いでしょう。 – jsosnowski

5

最高のことは、このようなあなたのためにそれを決定することです。

public File folderTxt = new File(File.separator + "home" + File.separator + "romankooo" + File.separator + "work" + File.separator + "txt" + File.separator); 
+0

ファイルのパスがどこかに見えるのは良いことです。ユーザーがパスを見ることができない場合、より簡単な解決策はどこにでもスラッシュ「/」を使用することです。 – jsosnowski

2

両方のOSのファイル区切り文字としてスラッシュ文字を使用します。換言すれば、C:\\PDFMalwareDataAnalyser\\Txt\\の代わりにC:/PDFMalwareDataAnalyser/Txt/を使用することができます。これはWindows OSでも動作します。

関連する問題