クラス BasicFileAttributes には、ファイルシステム内のファイルのプロパティを調べるためのメソッド isRegularFile() があります。残念ながら、Javadocの記述はかなり不足しています。
ファイルが不透明な内容の通常のファイルであるかどうかを判断します。
これは何を意味するのでしょうか?不透明なコンテンツを含む通常のファイルとは正確には何ですか?クラスの他のメソッドから、それがディレクトリまたはシンボリックリンクではないことがわかるので、他のすべてであると考える傾向があります。ただし、メソッドが存在するため、「不規則なファイル」の種類があるようです isOther() と呼ばれ、ディレクトリ、シンボリックリンク、または「通常のファイル」でない場合にtrueを返します。
では、Javaの通常のファイルとは正確には何でしょうか。
たとえば、UNIXの場合、通常のファイルは特別なものではありません。特別なファイルには、シンボリックリンクとディレクトリが含まれます。通常のファイルは、ファイルシステムに永続的に保存される一連のバイトです。
この回答をお読みください@ UNIX&Linux stackexchange: 通常のファイルとは
Rm -iはエイリアス、おそらくrm -iだと思います。 「通常の」部分は特に何も意味せず、それがパイプ、デバイス、ソケット、またはその他の「特別な」ものではないことを意味するだけです。
これは、ファイルがシンボリックリンク、パイプ、ランド、null、cpuなどではないことを意味します。おそらくLinuxの哲学はすべてテキストであると聞いたことがあるでしょう。これは文字通り真実ではありませんが、文字列処理ツールをファイルシステム要素に直接適用できる主要な運用コンテキストを示唆しています。この場合、それはより文字通りにそれを意味します。検出手順を個別に確認するには、ファイル/ etc/passwdまたはファイル/ dev/nullのようにコマンドファイルを試してください。
From ファイルリファレンス-AIX IBM
ファイルは、読み取りまたは書き込みが可能なデータの集まりです。ファイルは、作成するプログラム、書き込むテキスト、取得するデータ、または使用するデバイスです。コマンド、プリンター、端末、およびアプリケーションプログラムはすべてファイルに格納されます。これにより、ユーザーはシステムのさまざまな要素に統一された方法でアクセスでき、オペレーティングシステムに大きな柔軟性が与えられます。ファイルが作成されるとき、形式は暗黙指定されません。
ファイルには3つのタイプがあります
通常のファイルが最も一般的です。ワードプロセッシングプログラムを使用してドキュメントを作成すると、プログラムとドキュメントの両方が通常のファイルに含まれます。
通常のファイルには、テキストまたはバイナリ情報が含まれています。テキストファイルはユーザーが読み取ることができます。バイナリファイルはコンピューターで読み取り可能です。バイナリファイルは、ジョブを実行するようにシステムに指示する実行可能ファイルです。コマンド、シェルスクリプト、およびその他のプログラムは、実行可能ファイルに格納されます。
ディレクトリには、システムがすべてのタイプのファイルにアクセスするために必要な情報が含まれていますが、実際のファイルデータは含まれていません。その結果、ディレクトリは通常のファイルよりも少ないスペースを占有し、ファイルシステム構造に柔軟性と深さを与えます。各ディレクトリエントリは、ファイルまたはサブディレクトリを表し、ファイルの名前とファイルのiノード(インデックスノード参照)番号が含まれます。 iノード番号は、ファイルに関連付けられたデータの場所を説明する一意のiノードを表します。ディレクトリは、別個のコマンドセットによって作成および制御されます。詳細については、オペレーティングシステムとデバイスの管理の「ディレクトリ」を参照してください。
特殊ファイルは、システムのデバイスまたはプロセスによって作成された一時ファイルを定義します。特殊ファイルには3つの基本的なタイプがあります:FIFO(先入れ先出し)、ブロック、および文字です。FIFOファイルはパイプとも呼ばれます。パイプは1つのプロセスによって作成され、一時的に別のプロセスとの通信を許可します。これらのファイルは、最初のプロセスが終了すると存在しなくなります。ブロックファイルとキャラクターファイルはデバイスを定義します。
上記のすべては最初のリンクからのものです。運用システムの違いに関して他の多くの情報源をチェックしましたが、これは私が見つけたすべての情報源で最も一般的な定義のようです
私はこれの専門家ではありませんが、一見するとBasicFileAttributes
はクラスではなくインターフェースです。したがって、通常のファイルが何であれ、このインターフェースの実装に依存します。たとえば、このインターフェースを実装するクラスWindowsFileAttributs
.
このクラスの OpenJDKバージョン を見てみると、
!isSymbolicLink() && !isDirectory() && !isOther();
コードから他のすべての情報を取得します;-)