このページを正しく表示するには、ブラウザでJavaScriptを有効にする必要があります。
コース: 重要なクラス
レッスン: 基本的なI/O
セクション: ファイルI/O(NIO.2を含む)
その他の便利なメソッド
ホームページ > 重要なクラス > 基本的なI/O

その他の便利なメソッド

このセクションでは、このレッスンでこれまで紹介したメソッド以外の便利なメソッドを紹介します。 次の内容について説明します。

MIMEタイプの判断

ファイルのMIMEタイプを判断するには、probeContentType(Path)メソッドが便利です。 次のように使用します。

try {
    String type = Files.probeContentType(filename);
    if (type == null) {
        System.err.format("'%s' has an unknown filetype.%n", filename);
    } else if (!type.equals("text/plain") {
        System.err.format("'%s' is not a plain text file.%n", filename);
        continue;
    }
} catch (IOException x) {
    System.err.println(x);
}

コンテンツ・タイプ(Content-Type)を判断できない場合、probeContentTypeはnullを返します。

このメソッドの実装は大部分がプラットフォーム固有であり、確実なものではありません。 コンテンツ・タイプはプラットフォームのデフォルトのファイル・タイプ・ディテクタによって判断されます。 たとえば、ディテクタが.class拡張子に基づいてファイルのコンテンツ・タイプをapplication/x-javaと判断した場合は、誤っている可能性があります。

デフォルトの動作がニーズに対して不十分な場合、独自のFileTypeDetectorを作成できます。

サンプルのEmailでは、probeContentTypeメソッドを使用しています。

デフォルトのファイル・システム

デフォルトのファイル・システムを取得するには、getDefaultメソッドを使用します。 一般的な手法として、このFileSystems(複数形に注意)のメソッドを使用する場合は、次のようにFileSystem(単数形に注意)のいずれかのメソッドをそのまま続けて呼び出す("メソッド・チェーン")ことが多いです。

PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.*");

パス文字列の区切り文字

パスの区切り文字には、POSIXファイル・システムでは通常のスラッシュ(/)が使用され、Microsoft Windowsではバックスラッシュ(\)が使用されます。 他のファイル・システムでは、これ以外の区切り文字が使用される可能性があります。 デフォルトのファイル・システムのパス区切り文字を取得するには、次の2つの方法があります。

String separator = File.separator;
String separator = FileSystems.getDefault().getSeparator();

また、利用できる任意のファイル・システムのパス区切り文字を取得する場合にも、getSeparatorメソッドを使用できます。

ファイル・システムのファイル・ストア

ファイル・システムには、ファイルやディレクトリを保存するための1つ以上のファイル・ストアが存在します。 ファイル・ストアとは、基盤となるストレージ・デバイスを表します。 UNIXオペレーティング・システムでは、マウントされたファイル・システムのそれぞれがファイル・ストアとなります。 Microsoft Windowsでは、C:D:などの各ボリュームがファイル・ストアとなります。

ファイル・システムのすべてのファイル・ストアのリストを取得するには、getFileStoresメソッドを使用できます。 このメソッドはIterableインタフェースを実装するオブジェクトを返します。このオブジェクトでは拡張for文を使用して、すべてのルート・ディレクトリに対する反復処理を実行できます。

for (FileStore store: FileSystems.getDefault().getFileStores()) {
   ...
}

特定のファイルが保存されているファイル・ストアを取得する場合は、FilesクラスのgetFileStoreメソッドを次のように使用します。

Path file = ...;
FileStore store= Files.getFileStore(file);

サンプルのDiskUsageでは、getFileStoresメソッドを使用しています。


サンプル・プログラムで問題が発生した場合は、 Compiling and Running the Examples: FAQsを参照してください。
フィードバックをお寄せください。さまざまなご意見をお待ちしております。

前のページ: ディレクトリの変更監視
次のページ: 旧来のファイルI/Oコード