2012-01-18 15 views
-3

は、私はパスにファイルを書き込むことができます。iPhoneデバイスでファイルを読むにはどうしたらいいですか?

NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docPath = [dirPaths objectAtIndex:0]; 

が、私はこのファイルを読み取ることができません。 私は何をしなければなりませんか?

よろしく

+2

ディレクトリを開くことができないのに驚いていますか? – v1Axvw

+0

私はディレクトリを開くことができ、私はファイルを書くことができますが、読み込みに失敗しました - rcvバッファにデータがありません。 – theWalker

答えて

1

あなたは上記のコードでは、ちょうどあなたのドキュメントディレクトリのパスを提供します。以下のような何かをしようと、その後

if([dirPaths count] > 0) 
{ 
    NSString * documentsDirectory = [dirPaths objectAtIndex: 0]; 
    if(documentsDirectory) 
    { 
     NSString * docPath = [NSString stringWithFormat: @"%@/TheFileIAmLookingFor.txt",  
      [dirPaths objectAtIndex:0]]; 
    } 
} 

と::

は、次のような...特定のファイルを用意する必要があり

NSString * contentsOfDocPath = [[NSString alloc] initWithContentsOfFile: docPath] 

ファイルの実際の内容を取得します。

+0

私はこのパス(docPath)に自分の名前でファイルを書くことができますが、私はそれを読むことができません。私はMacのフォルダのアクセス許可を変更することができますシミュレータでは、読み取り操作はOKです。しかし、私は物理的なデバイスで何をしなければならないのですか? – theWalker

+1

私の答えはうまくいけばよい手がかりを与えます。特定のファイルではなくディレクトリを読み取ろうとしています。 iPhoneでファイルを読み込む方法を学び、より楽しい時間を過ごせます。 –

+0

ファイルを書き込む場合(これは私の質問です) - パスとファイル名はOKです。私の質問は別の問題です。 – theWalker

1

名前を持つファイルをディレクトリに書き込んでいます。
そのファイルを読み込みたい場合は、読み込むファイルをOSに指示する必要があります。

以下は、ディレクトリ内のファイル(この例では "Documents"ディレクトリ)を列挙するコードです。

ある時点で、コードは、読んでいるファイルについて決定する必要があります。

NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent: @"Documents"]; 
NSFileManager *localFileManager = [NSFileManager defaultManager]; 
NSDirectoryEnumerator *dirEnum = 
    [localFileManager enumeratorAtPath:docsDir]; 


NSString *file; 
while (file = [dirEnum nextObject]) { 
      if ([file isEqualToString: _The_NAME_YOU_ARE_LOOKING_FOR_]) { 
      NSString *fullPath = [NSString stringWithFormat:@"%@/%@", docsDir,file]; 
       // READ YOUR FILE FROM HERE 
      NSDictionary *attrs = [localFileManager 
         attributesOfItemAtPath:fullPath error:&error]; 
      if (error) { 
       NSLog(@" error - %@", error); 
      } else { 
       NSLog(@" file : %@", file); 
       NSInteger fsiz = [attrs fileSize]; 
       NSString *ftyp = [attrs fileType]; 
       NSDate *fmod = [attrs fileModificationDate]; 
          NSInteger fperm= [attrs filePosixPermissions]; 
       NSLog(@" %9d : %@ : %@ : %@ : %d", fsiz, file, ftyp, fmod, fperm); 
      } 
     } 
    } 
+0

私は完全なパス ".../Documents/sdtest.txt"にファイルを書き込むことができます。このファイルは存在し、オーガナイザの「Sanboxのデータファイル」にあります。しかし、私が同じファイル名 ".../Documents/sdtest.txt"を使って同じパスで読むと、rcvバッファに戻りデータがありません。 iPhoneのシミュレータでこれは問題ありません、私は "読み取りと書き込み"にフォルダのアクセス許可を変更することができます。しかし、私はデバイスで何をしなければならないか分からない。 – theWalker

+0

上記の答えにいくつかのコードを追加しました。このコードは、ディレクトリ内のサイズとアクセス権を含むすべてのファイルの属性をダンプします。ファイルのサイズが実際にゼロでないことを確認してください。 – Rayfleck

関連する問題