-3

私はObjectiveCの新しいプログラマーです。iphone内に「ダウンロード」ディレクトリを作成したい(パス:設定(iphone設定ディレクトリ))可能か知りたい。私はプログラムをテストするためにi電話シミュレーターを使用しています。

もう1つの質問は、iPhoneシミュレータで作成したディレクトリにアクセスするにはどうすればよいですか。以下に、iPhoneでフォルダを作成しようとしたコードが含まれています。しかし、iPhoneシミュレータを使用してそのディレクトリにアクセスすることはできません。このコードの何が問題になっていますか?

NSString *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/Test"];

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error];
4

5 に答える 5

3

次のように、ドキュメント ディレクトリにディレクトリをサブ フォルダとして作成できます。

-(IBAction)CreatDirInDocDir
{

    NSFileManager *filemgr = [NSFileManager defaultManager];
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *dir = [NSString stringWithFormat:@"%@",DirName];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:dir];

    NSError *error;

    if ([filemgr fileExistsAtPath:path ] == YES){

    }
    else
    {
        NSLog (@"File not found");

        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:&error];
    }


}

ドキュメントディレクトリフォルダにディレクトリを作成するときはいつでも、次のように作成されたカスタムディレクトリのすべてのリストを取得できます:-

//Get all Directory

 NSFileManager *fileMan = [NSFileManager defaultManager];

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

    NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory  error:nil];

    NSLog(@"files array %@", filePathsArray);

    NSMutableArray *directoryList=[[NSMutableArray alloc]init];


    for ( NSString *direPath in filePathsArray )
    {
        NSString *path = [documentsDirectory stringByAppendingPathComponent:direPath];
        BOOL isDir = NO;
        [fileMan fileExistsAtPath:path isDirectory:(&isDir)];
        if(isDir) {
            NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:path];
            NSLog(@"log path ==%@",fullPath);
            [directoryList addObject:fullPath];
        }
    }

NSLog(@"リスト パス ==%@",directoryList);

これで、インデックス付きの任意のディレクトリを取得できるすべてのディレクトリの配列ができました:)

于 2013-01-16T05:36:07.343 に答える
2

ここに投稿されたすべての方法は正しく、それらについてはたくさんの回答がありますが、概念について警告したいと思います。iCloud の導入以来、Apple は、大量のデータをドキュメント ディレクトリに保存するアプリケーションを拒否し始めました。これらのアプリケーションは、キャッシュによって使用されるか、後で再度ダウンロードされる可能性があります。ここでの問題は、iOS デバイスをクラウドにバックアップできることと、ドキュメント ディレクトリがバックアップ対象の 1 つであることです。クラウド上のアプリケーションで 1 GB をバックアップする自分を想像できますか? 以上がリンゴのリジェクトについての説明です。
temp/redownloadable/cached データを回避するには、キャッシュ ディレクトリに保存する必要があります。この便利なディレクトリは、新しいアプリをインストールしようとして十分なスペースがない場合など、デバイスの「ディスク」のスペースが不足している場合に解放されます。したがって、データを再度ダウンロードでき、必須でない場合は問題ありません。
もう 1 つの方法は、ドキュメント ディレクトリにデータを保持するが、システムにそれらをバックアップしないように指示することです。これは、ファイルを保存した doc サブディレクトリに特別なフラグを追加することで可能です。 5.0.1 からのみ使用できるため、より低い iOS をターゲットにする場合は、その存在を確認する必要があります。この場合、システムはデータを解放せず、バックアップもしません。これは Apple のガイドラインで安全です。
お役に立てれば

于 2013-01-16T07:00:36.947 に答える
1

ディレクトリを作成するには、次を使用できます。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Test"];
NSError *error;

if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error])
{
     NSLog(@"Couldn't create directory error: %@", error);
}

そのディレクトリ内のファイルを取得するには、次を使用できます。

NSArray *datArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:dataPath error:&error];
if(error)
{
     NSLog(@"Could not get list from directory, error = %@",error);
}

ここでは、すべてのファイル名がdatArray.

于 2013-01-16T05:35:44.100 に答える
0

作成したディレクトリを i phone シミュレーターで表示したい人は、次の手順に従ってください。

  1. ファインダーに行く
  2. Command +Shift + g をクリックします。
  3. ~/Library と入力し、[移動] をクリックします。
  4. Open Application Support --> i phone シミュレーター

次に、作成したアプリケーションとディレクトリを見つけることができます..

于 2013-01-17T04:09:13.323 に答える
0

'/' を追加する必要はありません。使うだけ

NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Test"];

これを試して

 NSArray *dirPath;
NSString *docsDir;
NSFileManager *filemgr = [NSFileManager defaultManager];
dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPath objectAtIndex:0];

if ([filemgr changeCurrentDirectoryPath: docsDir] == NO)
{
    NSLog(@"Error");
}else {
    NSString *currentPath = [filemgr currentDirectoryPath];
    NSLog(@"%@",currentPath);
}

NSString *dataDirectory = [docsDir stringByAppendingPathComponent:@"Test"];
if ([filemgr fileExistsAtPath:dataDirectory]){
        NSLog(@"dir Exist");
    }else{
NSLog(@"Creating Dir");
[filemgr createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error];
}
于 2013-01-16T05:46:37.547 に答える