1

播放列表文件 .m3u 包含外部设备(本例中为 USB 密钥)上可用的条目,例如:

/Volumes/KINGSTON/folder/mytitle.mp3

我想检查文件是否存在:

NSURL *url = [NSURL URLWithString:@"/Volumes/KINGSTON/folder/mytitle.mp3"];
NSFileManager *manager = [NSFileManager defaultManager];
NSLog(@"%d",[manager fileExistsAtPath:[url absoluteString]]); //returns 0. I expect 1

我也试过:

NSURL *u = [[NSURL alloc]initWithScheme:@"/Volumes" host:@"/KINGSTON" path:@"/folder/mytitle.mp3"];
NSLog(@"%d",[manager fileExistsAtPath:[u absoluteString]]); //0

我做错什么了?

谢谢,

罗兰

4

2 回答 2

4
NSURL *url = [NSURL URLWithString:@"/Volumes/KINGSTON/folder/mytitle.mp3"];

该字符串不描述 URL。这是一个路径名。使用fileURLWithPath:.

NSLog(@"%d",[manager fileExistsAtPath:[url absoluteString]]);

absoluteString不返回路径;它返回一个描述 URL 的字符串。使用path.

或者,更好的是,使用checkResourceIsReachableAndReturnError:.

我也试过:

NSURL *u = [[NSURL alloc]initWithScheme:@"/Volumes" host:@"/KINGSTON" path:@"/folder/mytitle.mp3"];

/Volumes 不是方案,/KINGSTON 不是主机,/folder/mytitle.mp3 是路径,但不引用任何存在的东西。

文件 URL 的方案是file:,主机通常是 localhost 或空字符串。文件 URL 的路径是文件的完整绝对路径。

于 2012-11-12T03:37:50.800 回答
1

在您的第一个示例中,您需要使用+[NSURL fileURLWithPath:]. 在你的第二个例子中,我看到了你想要做的事情,但你只是以错误的方式去做。

我认为NSURL当您拥有可以直接通过的路径时,您会为此烦恼-fileExistsAtPath:吗?

于 2012-11-11T23:03:50.163 回答