我朋友们,
我正在开发一个小应用程序,应该能够卸载卷。
目前,我正在使用以下代码来确定卷是否不可挂载:
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盘试过了。我有2个USB硬盘连接到我的mac上,它们无法通过Finder或Disk Utility挂载-它们是HFS格式的。我创建了一个使用上述代码的输出:
/,hfs,不可挂载:否,可删除:否
/Volumes/Elephant,hfs,unmountable: NO,removable: NO
/Volumes/Time Machine,hfs,unmountable: NO,removable: NO
/Volumes/USBSTICK,msdos,unmountable:是,removable:是
如果设备是FAT或MSDOS格式的,则该方法似乎只返回YES。这很奇怪,因为另外两个(Elephant,Time Machine)是通过USB连接的卷,必须是可移除和不可挂载的。有没有其他方法来获取这些信息,或者我在代码中做错了什么?
--
问候
马可
发布于 2010-08-13 02:55:27
使用你的代码,用我自己的U盘(一个1 1GB的Cruzer -是的,我知道我落后了),我得到了isRemovable的肯定。
尽管BOOL通常表示为YES或NO,但TRUE仍然有效。为了确保这一点,我也进行了测试。我每次都让isRemovable ==为TRUE/YES。
因此,由于条件"can be unmount /removed“可能取决于某些内容是否正在实际使用卷上的资源,这很可能是阻止此方法回答”继续并卸载它“的原因。在你的问题中,更多的上下文可能有助于识别这一点。
https://stackoverflow.com/questions/3469218
复制相似问题