2

コンピュータ上に存在するファイルのフルパスを取得する方法はありますか? たとえば、デスクトップ上のフォルダー内のファイルのフルパスを取得したい

私は使用してみました:

  File f = new File("help.chm");

  String f2=f.getAbsolutePath();
  f3=f3.replaceAll("\\\\","/" );
  System.out.println("Path:"+f3);

しかし、それは私に次のようなプロジェクトのパスを与えました:

C:/Users/toshiba/Documents/NetBeansProjects/test/help.chm

ファイルはそこにはありませんが。

4

5 に答える 5

2

を使用してを作成した場合、fileを使用してファイルの絶対パスを取得することはできません。new File("filename")これは、デフォルトのユーザー ホーム ディレクトリまたは JVM パスに従って相対パスが作成されるためです。relative pathfile.getAbsolutePath()

Java Docを見てみましょう: -

パス名は、抽象的であるか文字列形式であるかに関係なく、絶対または相対のいずれかです。絶対パス名は、それが示すファイルを見つけるために他の情報を必要としないという点で完全です。

対照的に、相対パス名は、他のパス名から取得した情報に関して解釈する必要があります。デフォルトでは、java.io パッケージのクラスは常に現在のユーザー ディレクトリに対して相対パス名を解決します。このディレクトリは、システム プロパティ user.dir によって名前が付けられ、通常は Java 仮想マシンが呼び出されたディレクトリです。

したがって、absolute pathこの場合の を取得するには、実際には自分でパスを作成する必要があります。absolute pathを保存したディレクトリまで を取得しfile、それに を追加しますfile name

于 2012-10-15T20:29:57.547 に答える
0

他の回答はあなたの質問をカバーしていないので、ここに私のコメントがあります:

ファイルのパスを取得するには、まず Java プログラムにファイルの場所や検索方法を伝える必要があります。

特定の例では、次を使用してデスクトップパスを取得できます。System.getProperty("user.home") + "/Desktop";次に、デスクトップ上のフォルダーを検索して、一致するファイル名を見つけることができます。

ファイルの検索方法については、こちらをお読みください: docs.oracle.com/javase/tutorial/essential/io/find.html

于 2012-10-15T20:42:11.853 に答える
0

(既定のフォルダー) からファイルを読み込もうとしています

C:/Users/toshiba/Documents/NetBeansProjects/test/

ファイルは存在しませんが、ファイルになる可能性のあるパスは次のようになります

C:/Users/toshiba/Documents/NetBeansProjects/test/

実際の場所からファイルを読み取る場合:

File f = new File("C:/Users/toshiba/Desktop/help.chm");

exists()true を返すことがわかります。

 System.out.println(f.exists());

それで:

  String f2=f.getCanonicalPath();
于 2012-10-15T20:42:48.587 に答える
0

AFileはファイルパスの表現であり、必ずしもディスク上に存在するファイルではありません。つまり、Fileオブジェクトが存在しないために、ファイルがディスク上に存在する必要はありませんnull

方法があるのはそのFile.exists()ためです。

于 2012-10-15T20:27:53.023 に答える
0

パス「help.chm」は、JVM を起動したディレクトリからの相対パスになります。この場合、このディレクトリは次のようになります。C:/Users/toshiba/Documents/NetBeansProjects/test/

デスクトップへのパスを取得するには、Windows のデスクトップ ディレクトリの絶対パスを使用する必要があります。C:/Users/toshiba/Desktop/help.chm

于 2012-10-15T20:30:17.283 に答える