Xamarin.Macでファイルシステムの詳細を取得する

提供: MonoBook
ナビゲーションに移動 検索に移動

Macにはファイルシステムの詳細を取得するAPIがある複数あり、それぞれ取得できる情報が異なる。

NSWorkspaceのGetFileSystemInfoメソッド[編集 | ソースを編集]

NSWorkspaceのGetFileSystemInfoメソッドでは以下の情報が取得できる。

  • removableFlag = リムーバブルか
  • writableFlag = 書き込みできるか
  • unmountableFlag = 取り外しできるか
  • description = 説明
  • fileSystemType = 形式
    // 入力
    string path = @"/Volumes/USB-FLASH-DRIVE";

    // 出力
    bool removableFlag;
    bool writableFlag;
    bool unmountableFlag;
    string description;
    string fileSystemType;

    // 取得
    NSWorkspace.SharedWorkspace.GetFileSystemInfo(
        path,
        out removableFlag,
        out writableFlag,
        out unmountableFlag,
        out description,
        out fileSystemType);

fileSystemTypeには以下のような値が入ってくるようだ。 詳細は不明、これ以外にもあるかもしれない。

概要
apfs APFS、新しいmacの標準ファイルシステム
hfs HFSまたはHFS+、古いmacの標準ファイルシステム
ufs FreeBSDでお馴染みのUFS
msdos FAT32exFATなどのFAT系は一律これになるっぽい
cddafs 音楽CD
cd9660 CD-ROM
udf DVD-ROM
nfs NFSだけでなくFTPで接続中のサーバーもこれに見えるっぽい
afpfs Apple File Protocol
smbfs Windows共有Samba
cifs 最近のWindows共有はこれになるっぽい
webdav WebDAV
ncp Novell Netware

NSFileManagerのGetFileSystemAttributesメソッド[編集 | ソースを編集]

NSFileManagerのGetFileSystemAttributesメソッドでは以下の情報を取得できる。

  • 空き容量
  • 空きノード数
  • 使用容量
  • 使用ノード数
  • 全体容量
  • デバイスID(UNIXのstat構造体のst_dev変数に相当)
    NSFileSystemAttributes attrs = NSFileManager.DefaultManager.GetFileSystemAttributes(path);

Xamarin.MacというかCocoaAPIといえば戻り値をNSDictionaryで返してくるものが多いが、このメソッドの戻り値はNSFileSystemAttributesクラスなのでVisual Studio for Macであればインテリセンスが発動するので迷うことはないと思われる。

関連項目[編集 | ソースを編集]