Xamarin.Macでファイルシステムの詳細を取得する
ナビゲーションに移動
検索に移動
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 | FAT32やexFATなどの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というかCocoaのAPIといえば戻り値をNSDictionaryで返してくるものが多いが、このメソッドの戻り値はNSFileSystemAttributesクラスなのでVisual Studio for Macであればインテリセンスが発動するので迷うことはないと思われる。