【问题标题】:need to access directory list in ios需要访问ios中的目录列表
【发布时间】:2015-08-31 09:33:17
【问题描述】:

我需要在这个路径下创建一个文件夹和文件 /var/mobile/Containers/Data/ 但是当我寻找它时找不到文件夹 我的代码>>

NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = @"/var/mobile/Containers";//[paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyNewFolder/myDB.db"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error];

【问题讨论】:

  • iOS 应用被沙盒化...
  • 需要创建公共数据库以从多个应用程序访问它可以吗??
  • @ya 这真的是非常非常基本的 iOS 东西,当你刚开始接触它时,任何教程都涵盖了这种类型。我建议搜索网络。那里有大量资源。

标签: ios objective-c iphone swift


【解决方案1】:

我真的理解你的问题。希望这会有所帮助:

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

        NSLog(@"Saving");

        NSUserDefaults *prefs = [[NSUserDefaults alloc] init];

        NSString *path1 = [NSString stringWithFormat:@"/var/mobile/Containers"];

        NSString *dataPath = [path stringByAppendingPathComponent:path1];

        dataPath = [dataPath stringByStandardizingPath];

                filePath = [dataPath stringByAppendingPathComponent:@"MyNewFolder/myDB.db"];

【讨论】:

    【解决方案2】:

    这是 iOS 8 的方法Apple recommends to retrieve the location of the Documents directory

    // Returns the URL to the application's Documents directory.
    - (NSURL *)applicationDocumentsDirectory
    {
        return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
    }
    

    【讨论】:

      【解决方案3】:

      创建文件夹

        //-- to select path from image--//
          AppDelegate *del = (AppDelegate*)[[UIApplication sharedApplication]delegate];
          NSString *dataPath=[del.databasePath copy];
          NSString *Documentpath=[del.path_Folder_Document copy];
          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
          NSString *documentsDirectory = [paths objectAtIndex:0]; // Fetch path for document directory
          dataPath = (NSMutableString *)[documentsDirectory stringByAppendingPathComponent:@"/Images"];
          Pathforimage=dataPath;
      

      如果不存在则添加文件夹

       if (![[NSFileManager defaultManager] createDirectoryAtPath:Pathforimage withIntermediateDirectories:NO attributes:nil error:nil])
          {
              //NSLog(@"directory... /Images already exist..");
          }
          else
          {
              //NSLog(@"directory created!");
          }
          NSString *pathforAudios=[NSString stringWithFormat:@"%@/Images_Audio",Documentpath];
          if (![[NSFileManager defaultManager] createDirectoryAtPath:pathforAudios withIntermediateDirectories:NO attributes:nil error:nil])
          {
              //NSLog(@"directory... /Images already exist..");
          }
          else
          {
              //NSLog(@"directory created!");
          }
      
          //-- end of  path --//
      

      将图像保存到文件夹

         //Save Image to Documents Directory
         NSString  *imagePath = [Pathforimage stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpg",Img_File_Name]];
         [UIImageJPEGRepresentation(image, 0.1) writeToFile:imagePath atomically:YES];
         imagePath=nil;
         image=nil;
      

      删除文件/文件夹

        NSFileManager *fileMgr = [NSFileManager defaultManager];
          NSError *error = nil;
          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
          NSString *documentsDirectory = [paths objectAtIndex:0];
          NSArray *files = [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:nil];
          NSLog(@"files =%@",files);
      
           NSString *Images_Folder = (NSMutableString *)[documentsDirectory stringByAppendingPathComponent:@"/Images"];
      NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:Images_Folder error:nil];
      for (NSString *filename in fileArray)
      {
          NSLog(@"Images =%@",filename);
          [fileMgr removeItemAtPath:[Images_Folder stringByAppendingPathComponent:filename] error:NULL];
      }
      
      NSString *Images_Audio_Folder = (NSMutableString *)[documentsDirectory stringByAppendingPathComponent:@"/Images_Audio"];
      NSArray *fileArray1 = [fileMgr contentsOfDirectoryAtPath:Images_Audio_Folder error:nil];
      for (NSString *filename in fileArray1)
      {
          NSLog(@"Images_Audio =%@",filename);
          [fileMgr removeItemAtPath:[Images_Audio_Folder stringByAppendingPathComponent:filename] error:NULL];
      }
      

      【讨论】:

      • @Yahia El-Dow,这是完美的解决方案
      • 此代码在同一个项目文件夹中创建文件,但我需要在应用程序文件夹外创建文件夹
      • 这不可能我的朋友
      • 除了文档目录之外,您无法访问。
      • 可以创建公共数据库并从多个应用程序访问它或不能
      【解决方案4】:

      创建floder

      NSError *error;
      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
      NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyNewFolder"];
      NSFileManager *fileManager = [NSFileManager defaultManager];
      if (![fileManager fileExistsAtPath:dataPath]){
          [fileManager createDirectoryAtPath:dataPath withIntermediateDirectories:YES attributes:nil error:&error]; //Create folder
      
      }else{
         NSLog(@"exist");
      }
      NSLog(@"dataPath:%@",dataPath);
      

      【讨论】:

        猜你喜欢
        • 2021-07-25
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 2016-01-05
        • 1970-01-01
        • 2011-02-11
        • 2023-03-11
        • 2011-05-15
        相关资源
        最近更新 更多