2016-11-25 6 views
-5

Fileクラスが表すものについて、私はちょっと混乱します。なぜなら、FileクラスではなくPathクラスを記述していると言われており、javadocsは "ファイルとディレクトリのパス名の抽象表現です。 ?文java.ioパッケージのFileクラスはどのようなものを表しますか?

+1

正しい文は、常にドキュメント内の文です。あなたにこの文が不明な点は何ですか? – Tunaki

+0

ファイルとそれに対応する情報を表すクラスです。 –

+0

どのような人ですか?誰? Javadocと比較して信頼性は何ですか? – EJP

答えて

0

これは、単一のファイルまたはディレクトリを表し

たとえば、中:。

File f = new File("/home/mytextfile.txt"); 
File p = f.getParentFile() 

変数fはテキストファイルで変数pが、そのテキストファイルを含む親フォルダを表します。この場合は/ home /です。

1

ファイルシステムパス名(絶対または相対)を表します。パス名は、実際のファイルまたはディレクトリに対応していても、そうでなくてもかまいません。


ので、正しい文は何ですか?

javadocが正しいです。 javadocは常にとなります... Java標準クラスライブラリの仕様ですので、

(そしてFileがパスであると言う人も正しい彼らは... javadocが言うことを言っている。)


例:

File dir = new File("weeble"); 
System.out.println(dir.exists()); // Prints false 
dir.mkdir();      // Assume this returns true .... 
System.out.println(dir.exists()); // Prints true 

開始時Fileは、存在しないファイルシステムオブジェクトのパス名を表します。次に、mkdir()と呼びます。その後、Fileは、存在するディレクトリのパスを表します。しかし、他のアプリケーション(またはこのアプリケーションの他のスレッド)は、「weeble」ディレクトリを削除する可能性があり、Fileは、存在しないオブジェクトのパス名を再度表します。

レコードの場合、「ファイル」または「ディレクトリ」を明確に表すJavaクラスはありません。ファイルシステムオブジェクトのライフサイクルはオペレーティングシステムによって管理され、POSIXのsyscall APIはこれらのオブジェクトをアプリケーションオブジェクトと結びつける機能を提供しません。したがって、Javaはそれを行うことはできません。

1

これを考慮してください:Fileオブジェクトを作成するときに、まだハードディスク上に何も対応していない可能性があります。その時点で、ディレクトリ(mkdir()またはmkdirs())またはファイルとしてコンテンツをストリーミングして作成することもできます。

文字列化された値は、単純なファイル名またはフォルダ名、相対ファイル名またはフォルダ名からほとんど何でも表すことができます。または、絶対ファイルまたはフォルダ名も、OSで必要な形式(Windowsのドライバ文字など)で表すことができます。

これは実際にはパスと呼ばれていたはずです。しかし、問題はないが、Java 7以降ではPathというインタフェースがある。現代のコンピュータユーザは、ファイルと言うとドキュメント(コンテンツ付き)を意味するが、古いUnix/POSIXの用語やマントラ(数十年前)によると、実際のディレクトリ。

関連する問題