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:]。2番目の例では、あなたがやろうとしていることはわかりますが、単に間違った方法で進んでいます。

NSURL直接渡すことができるパスを持っているときに気にしている理由があると思います-fileExistsAtPath:か?

于 2012-11-11T23:03:50.163 に答える