4

ファイルが存在するかどうかを確認しようとしています。私がこれを使用する場合:

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:filePath]];

if (data == NULL){
   ...
}

私はいつも得るNULL

私が見つけたよりもNSFileManager

NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:filePath])

期待どおりに動作します。これら 2 つの手順の違いの原因は何ですか?

4

3 に答える 3

3

URLWithString に渡すファイル パスの種類は何ですか? 通常のパス (file://... で始まらない) の場合は、fileURLWithPath: を使用して文字列パスを URL に変換する必要があります。

于 2012-06-11T02:49:38.730 に答える
2

2 つのクラスの関連性はわずかです。最初に使用する関数は、ほぼ確実にバックグラウンドで NSFileManager を使用する便利なメソッドです。ただし、それ以外の場合、NSData にはファイルとは関係のない多くの目的があります。

どちらを使用するかは、目的によって異なります。ファイルの内容を読みたい場合は、おそらく最初のものを使用するでしょう。ファイルが存在する場合にそれを削除したい場合は、間違いなく 2 番目のファイルを使用します。

于 2012-06-11T02:11:11.510 に答える
0

NSData は、ファイルのコンテンツ(またはデータ) を扱いますが、そうでない場合もあります。

NSFileManager は、ファイル システム上のファイルを処理します。たとえば、ファイルのパス、コピー/移動、フォルダーの列挙、アクセス許可の確認などです。ファイルの内容よりも、ファイルの抽象化に関係があります。

于 2012-06-11T02:21:22.433 に答える