iPhone:NSFilemanager fileExistsAtPath:isDirectory:正常に動作していませんか?
-
20-09-2019 - |
質問
私はジェイルブレイクされたiPhone用アプリに取り組んでいます。私は、フォルダのディレクトリのみを取得しようとしています。私はこれをやってます:
NSArray *contentOfFolder = [[NSFileManager defaultManager] directoryContentsAtPath:path];
NSLog(@"contentOfFolder: %@", contentOfFolder);
directoriesOfFolder = [[NSMutableArray alloc] initWithCapacity:100];
for (NSString *aPath in contentOfFolder) {
NSLog(@"apath: %@", aPath);
BOOL isDir;
if ([[NSFileManager defaultManager] fileExistsAtPath:aPath isDirectory:&isDir] &&isDir)
{
[directoriesOfFolder addObject:aPath];
NSLog(@"directoriesOfFolder %@", directoriesOfFolder);
}
}
NSLog(@"dirctories %@", directoriesOfFolder);
が、私は何を得るを見てください。私は、フォルダのすべてのコンテンツを取得するときに正常に見えるます:
2009-07-28 23:23:35.930 Drowser [573:207]新しいパス/民間の/ var 2009-07-28 23:23:35.945 Drowser [573:207] contentOfFolder:( キーホルダー、 「管理設定」、 モバイル機器、 バックアップ、 キャッシュ、 デシベル、 EA、 空の、 フォルダ、 libに、 地元、 ロック、 ログ、 ログインすると、 モバイル、 MSGの、 環境設定、 ルート、 実行して、 スプール、 スタッシュ、 TMP、 VM )
が、その後ます:
2009-07-28 23:23:35.950 Drowser [573:207] apath:キーホルダー 2009-07-28 23:23:35.954 Drowser [573:207] apath:管理された環境設定 2009-07-28 23:23:35.959 Drowser [573:207] apath:モバイル装置 2009-07-28 23:23:35.984 Drowser [573:207] apath:バックアップ 2009-07-28 23:23:35.993 Drowser [573:207] apath:キャッシュ 2009-07-28 23:23:36.002 Drowser [573:207] apath:DB 2009-07-28 23:23:36.011 Drowser [573:207] apath:EA 2009-07-28 23:23:36.019 Drowser [573:207] apath:空 2009-07-28 23:23:36.028 Drowser [573:207] apath:フォルダ 2009-07-28 23:23:36.037 Drowser [573:207] apath:LIB 2009-07-28 23:23:36.046 Drowser [573:207] directoriesOfFolder( LIB )
唯一の "LIB"!フォルダとして認識されています。それはどのようにすることができますか?他の人があまりにもフォルダです。私はSSH経由でそれを確認します。
誰もがアイデアを持っているのでしょうか?私が何か間違ったことをやっているか?
解決
これは作るために本当に簡単間違いですが、それも修正するのはとても簡単です。ディレクトリの内容を列挙するだけであなたの項目の名前ではなく、項目の完全なパスを提供します。あなたは完全なパスを自分で構築する必要があります。だからここであなたが持ってます:
for (NSString *aPath in contentOfFolder) {
NSLog(@"apath: %@", aPath);
BOOL isDir;
if ([[NSFileManager defaultManager] fileExistsAtPath:aPath isDirectory:&isDir] &&isDir) {
[directoriesOfFolder addObject:aPath];
NSLog(@"directoriesOfFolder %@", directoriesOfFolder);
}
}
あなたは実際にこれを持っている必要があります:
for (NSString *aPath in contentOfFolder) {
NSString * fullPath = [path stringByAppendingPathComponent:aPath];
BOOL isDir;
if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] &&isDir) {
[directoriesOfFolder addObject: fullPath];
}
}