2012-11-11 42 views
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
NSURL *url = [NSURL URLWithString:@"/Volumes/KINGSTON/folder/mytitle.mp3"]; 

该字符串没有描述的URL。这是一个路径名。使用fileURLWithPath:

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

absoluteString不归路;它返回一个描述URL的字符串。使用path。或更好的是,use checkResourceIsReachableAndReturnError:

我也试过:

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

/卷不是一个方案,/ KINGSTON不是主机,/folder/mytitle.mp3是一个路径,但并非指任何存在的东西。

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

1

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

我想你有打扰NSURL当你有可以直接通过-fileExistsAtPath:路径的原因?

+0

NSURL是Apple在其文档中推荐的。没有其他动机 – roland