objective-c - Cocoa:检测无法安装的卷

标签 objective-c cocoa filesystems unmount

各位,

我正在开发一个小型应用程序,它应该能够卸载卷。

目前,我使用以下代码来确定卷是否不可安装:

BOOL isRemovable, isWritable, isUnmountable;
NSString *description, *type;

BOOL succ = [ws getFileSystemInfoForPath:[itemInfo objectForKey:@"path"]
                isRemovable:&isRemovable
                isWritable:&isWritable
                isUnmountable:&isUnmountable
                description:&description
                type:&type];

问题是只有物理可移动卷(例如 CD 或 DVD)才会获得 isUnmountable=YES 标志。 USB 设备则不然,尽管它们也是不可安装的。

你们有解决办法吗?

----编辑

我用另一个 FAT 格式的 U 盘尝试过。我的 Mac 连接了 2 个 USB 硬盘,这些硬盘无法通过 Finder 或磁盘实用程序卸载 - 这些硬盘都是 HFS 格式的。我创建了一个使用上面代码的输出:

/,hfs,不可安装:否,可移动:否
/Volumes/Elephant,hfs,不可安装:否,可移动:否
/Volumes/Time Machine,hfs,不可安装:否,可移动:否
/Volumes/USBSTICK,msdos,不可安装:是,可移动:是

看起来该方法仅在设备为 FAT 或 MSDOS 格式时返回 YES。这很奇怪,因为其他 2 个(Elephant、Time Machine)是通过 USB 连接的卷,并且必须是可移动和不可安装的。是否有其他方法来获取该信息或者我在代码中做错了什么?

--

问候

马可

最佳答案

使用你的确切代码,用我自己的 USB 内存棒(一个 1GB Cruzer - 是的,我知道我落后了),我得到了 isRemovable 的"is"。

尽管 BOOL 通常表示为 YES 或 NO,但 TRUE 也可以。为了确定这一点,我也进行了测试。我每次都会得到 isRemovable == TRUE/YES。

因此,由于“可以卸载/删除”条件可能取决于某些内容是否实际使用卷上的资源,因此很可能这就是阻止此方法回答“继续并卸载它”的原因。您问题中的更多上下文可能有助于识别该内容。

关于objective-c - Cocoa:检测无法安装的卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3469218/

相关文章:

ios - 设置自定义 UITableView tableHeaderView

objective-c - NSCGImageSnapshotRep,如何获取位图数据

objective-c - Cocoa api 报告的可用空间值不正确,我应该使用什么?

objective-c - OpenGL glBlendFuncSeparate

linux - 基于 linux 的嵌入式系统上的根用户

python - pyspark:找不到本地文件

iOS - 重新排序 CoreData 中的项目

ios - SWRevealViewController 错误。构建失败,但没有错误

objective-c - 以编程方式检查 OS X 上的请勿打扰状态

python - 在带有HFS +的OSX上的python中,如何获取现有文件名的正确大小写?