Javaでファイルパスの問題

私はしばしばので、この要約を書くために、私はプロジェクトを書いている時点で混乱になり、問題をルーティングし、新人でした。

相対パス

1、Javaでの相対パスは、JVMの起動パスが相対的であり、一般的には、プロジェクト名の下で開始されました。

ここでの例では、私は、ディレクトリのテストプロジェクトである、書き込みにEclipseを使用します

サンプルコード:

パブリック クラスDEMO1 { 

    公共 静的 ボイドメイン(文字列[]引数)をスロー例外{ 
        ファイルF1 = 新しいファイル(「test1.txtというを」)。
        ファイルF2 = 新しいファイル( "./ test2.txtという名前" ); 
        ファイルF3 = 新しいファイル( "SRC / test3.txt" ); 
        ファイルF4 = 新しいファイル( "test4.txt" ); 
        System.out.println(f1.exists() + ":" + f1.getCanonicalPath()); 
        System.out.println(f2.exists() + ":" +  f2.getCanonicalPath());
        するSystem.out.println(F3。+ ":" + f3.getCanonicalPath()); 
        System.out.println(f4.exists() + ":" + f4.getCanonicalPath()); 
    } 

}

出力:

:D:\スパム\パス\ test1.txtという
 :D:\スパム\パス\ test2.txtという名前の
 :D:\スパム\パス\ SRC \ test3.txt
 :D:\スパム\パス\ test4.txt

説明:

①の例から、我々はすべてのファイルがDに相対的なもので見ることができます:\パスが確立スパム\パスを。

現在のJVM起動時のディレクトリとは対照的に、すべて同じセマンティック②」./ TEST2" と 『TEST1』は、表現しました

③「../テストは、」上のディレクトリにカレントディレクトリを示し、

意味表現ファイルを教え④test4のみ1つのパスです

2、ある、getPath()、getAbsolutePath()、getCanonicalPath()区别

例:

パブリック クラスDEMO1 { 

    公共 静的 ボイドメイン(文字列[]引数)をスロー例外{ 
        ファイルF1 = 新しいファイル(「test1.txtというを」)。
        ファイルF2 = 新しいファイル( "./ test2.txtという名前" ); 
        ファイルF3 = 新しいファイル( "SRC / test3.txt" ); 
        System.out.println(f1.exists() + ":" + f1.getPath()); 
        System.out.println(f2.exists() + ":" + f2.getAbsolutePath()); 
        System.out.println(f2.exists() + ":" + f2.getCanonicalPath()); 
        するSystem.out.println(F2。f2.getPath())。
        System.out.println(f3.exists() + ":" + f3.getCanonicalPath()); 
    } 

}

出力:

:test1.txtという
 :D:\スパム\パス\ \ test2.txtという名前。
 :D:\スパム\パス\ test2.txtという名前の
 :\ test2.txtという名前の
 :D:\スパム\パス\ SRC \ test3に。txt

説明:

①getPath():あなたは、文字列の取得は、ファイルを作成することです見ることができます

②getAbsolutePath():絶対パスが解析されていない取得

③getCanonicalPath():絶対パス指定を得ます

 図3に示すように、ファイルClass.getResource(文字列のパス)をロード

例:

パブリック クラスDEMO2 {
     公共 静的 ボイドメイン(文字列[]引数)をスロー例外{ 
        クラス <?> C = DEMO2を。クラス
        System.out.println(c.getResource( "" )); 
        System.out.println(c.getResource( "/" )); 
        System.out.println(c.getResource( "" ).toURI()); 
        ファイルF1 = 新しいファイル(c.getResource( "/ test3.txt" ).toURI()); 
        System.out.println(f1.exists() + ":" + f1.getPath()); 
    } 
}

出力:

ファイル:/ D:/スパム/パス/ binに/テスト/ 
ファイル: / D:/スパム/パス/ binに/ 
ファイル: / D:/スパム/パス/ binに/テスト/
 :D:\スパム\パス\ binに\ test3.txt

説明:

getResource(文字列のパス)ファイルをロードするための一般的な方法、およびDに関して:/スパム/パス/ binディレクトリ、

.javaファイル用の.classファイルのsrcディレクトリのbinディレクトリ、と実質的にbinディレクトリおよびsrcディレクトリが対応します。

絶対パスは非常に単純に、と言って何も言うことはないではありません。

おすすめ

転載: www.cnblogs.com/mgblogs/p/12404343.html