私は与えられたパスは、任意のパッケージを使用せずに、ファイルまたはディレクトリであるかどうかと識別するJavaプログラムを作成しています。
ファイルとディレクトリ間の属性区別は何ですか?
また、どのようにisFile()
してisDirectory()
方法からjava.io.File
バックエンドでの作品?
私は拡張子から分離しようとしたが、ディレクトリ名にも同様の期間の後に文字を含めることができることを見出しましたdirectoryName.extension
。私は、インターネット上のいくつかの研究をしましたが、固溶体で来ることができませんでした。
class FileCheck{
public static void main(String[] args){
boolean checkOne = isFile(C:\users);
boolean checkTwo = isFile(C:\users\file.txt);
boolean checkThree = isDirectory(C:\users);
boolean checkFour = isDirectory(C:\users\file.txt);
}
}
混同してはいけないisFile()
とisDirectory()
方法。彼らは、ユーザが作成した関数です。からインポートされませんjava.io.File
。
私が合格した場合に予想されるC:\users
引数として、それは返す必要がありますtrue
から値をisDirectory()
関数とするときC:\users\file.txt
、それは返す必要がありますfalse
。同じ論理が適用されるためisFile()
の方法。
ファイルとどのような最終的にはファイルシステム上のディレクトリを依存しているとは何ですか。ファイルとディレクトリを区別するために、JVMは、ファイルシステムを呼び出し、情報を取り戻すだろう。知ることは、単にPath
十分ではありません。
あなたは深く掘るしたい場合には、より複雑になります。Linuxのext4ファイルシステムのすべてで内部的に例えばファイルです。ディレクトリごとなど、より多くの情報を持つだけの特別なファイルですExt4のディスクレイアウト:
ext4のファイルシステムでは、ディレクトリは、ファイルシステム上のinode番号に任意のバイトの文字列(通常はASCII)をマッピングし、多かれ少なかれフラットファイルです。同じinode番号を参照し、ファイルシステム全体で多くのディレクトリエントリが存在することができます - これらはハードリンクとして知られており、それは、なぜハードリンク他のファイルシステムではない参照ファイルすることができます。このように、ディレクトリエントリは、所望される特定のディレクトリエントリのディレクトリファイルに関連付けられたデータブロック(単数または複数)を読み取ることによって見出されます。