1. ホーム
  2. cocoa

NSURLを使ったファイル存在のテスト

2023-11-17 03:49:47

質問

Snow Leopard では、パス名や Core Services の FSRef ではなく、ファイルを参照するために NSURL オブジェクトを使用する多くの新しいメソッドが導入されました。

しかし、URL ベースのメソッドを見つけることができないタスクが 1 つあります。ファイルが存在するかどうかをテストすることです。私は、URL ベースのバージョンの -[NSFileManager fileExistsAtPath: ] . このメソッドと同様に、このメソッドは YES を返さなければなりません。

を調べようとすることもできますが、様々な リソースの値 を探すこともできますが、どれもファイルが存在しないことを明示的に保証しているわけではなく、中には(例えば NSURLEffectiveIconKey など) は、ファイルが存在するとコストがかかる可能性があります。

ただ、NSFileManagerの fileExistsAtPath: を使うこともできますが、もっと現代的な方法があれば、そちらを使いたいですね。

Cocoa、CF、または Core Services で、与えられたファイル (またはファイル参照) URL が存在するファイルシステム・オブジェクトを参照しているかどうかを保証/文書化した簡単なメソッドまたは関数はありますか?

どのように解決するのですか?

NSURLにはこのメソッドがあります。

- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error

どの "ファイル URL が指すリソースに到達できるかどうかを返します "。

NSURL *theURL = [NSURL fileURLWithPath:@"/Users/elisevanlooij/nonexistingfile.php" 
               isDirectory:NO];
NSError *err;
if ([theURL checkResourceIsReachableAndReturnError:&err] == NO)
    [[NSAlert alertWithError:err] runModal];