如何制作iOS目录?

Posted

技术标签:

【中文标题】如何制作iOS目录?【英文标题】:How to make a directory iOS? 【发布时间】:2011-11-06 20:13:09 【问题描述】:

好的,

所以我有一个需要更新的 Cydia 应用程序。我知道 Cydia 应用程序没有 Documents 文件夹,因此您必须创建一个。以下是我之前在 ios 4 中的制作方法(在 iOS 5 上不起作用):

mkdir("/var/mobile/Library/APPNAME", 0755);
mkdir("/var/mobile/Library/APPNAME/Documents", 0755);

NSString *foofile = @"/var/mobile/Library/APPNAME/Documents/database.db";
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];

if (fileExists == TRUE) 
    NSLog(@"already exists");
 else 
    NSLog(@"doesn't exists");
    NSFileManager *fileManager = [[NSFileManager defaultManager]autorelease];
    NSError *error;
    NSString *documentDBFolderPath = @"/var/mobile/Library/APPNAME/Documents/database.db";

    NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"database.db"];
    [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error];


我还包含了将数据库文件复制到该文件夹​​的代码。这不起作用(即使我通过 SSH 手动创建文件夹)。

请帮忙!谢谢。

【问题讨论】:

出了什么问题,或者我可以使用哪些其他代码来创建目录? 对,怎么了?你还没有告诉我们。没有错误消息,没有失败的描述。 @Daniel R Hicks:什么都没有发生。从下面的代码粘贴后,我确实收到了错误...Create directory error: Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" UserInfo=0x1c2650 NSFilePath=/var/mobile/Library/APPNAME, NSUnderlyingError=0x1c3520 "The operation couldn’t be completed. Operation not permitted" 【参考方案1】:

这是我创建目录的方法

-(void)createDirectory:(NSString *)directoryName atFilePath:(NSString *)filePath

    NSString *filePathAndDirectory = [filePath stringByAppendingPathComponent:directoryName];
    NSError *error;

    if (![[NSFileManager defaultManager] createDirectoryAtPath:filePathAndDirectory
                                   withIntermediateDirectories:NO
                                                    attributes:nil
                                                         error:&error])
    
        NSLog(@"Create directory error: %@", error);
    

【讨论】:

这是我得到的错误...The operation couldn’t be completed. Operation not permitted 这可能就是你要找的东西***.com/questions/4650488/…【参考方案2】:

尝试使用createDirectoryAtURL:withIntermediateDirectories:attributes:error:

NSFileManager Class Reference:

createDirectoryAtURL:withIntermediateDirectories:attributes:error:

在指定路径创建具有给定属性的目录。

参数

url - 指定要创建的目录的文件 URL。 如果要指定相对路径,则必须设置 在创建对应之前的当前工作目录 NSURL 对象。此参数不能为 nil。

createIntermediates - 如果YES,此方法会创建任何不存在的 父目录作为在 url 中创建目录的一部分。如果NO, 如果任何中间父目录不存在,则此方法失败 不存在。如果有任何中间路径,此方法也会失败 元素对应于文件而不是目录。

attributes - 新目录和任何新创建的文件属性 中间目录。您可以设置所有者和组号, 文件权限和修改日期。如果您为此指定 nil 参数或省略特定值,一个或多个默认值是 如讨论中所述使用。对于键列表,您可以 包含在本词典中,请参阅“常量”(第 54 页)部分列表 在属性字典中用作键的全局常量。一些 的键,例如 NSFileHFSCreatorCode 和 NSFileHFSTypeCode,做 不适用于目录。

error - 在输入时,指向错误对象的指针。如果发生错误, 此指针设置为包含错误的实际错误对象 信息。如果不这样做,您可以为此参数指定 nil 想要错误信息。

返回值YES 如果 目录已创建或已存在,如果发生错误,则为 NO。

【讨论】:

用我的 iPad 回答时似乎有点慢...,其他答案似乎与此几乎相同。【参考方案3】:

检查NSFileManager's class reference。要创建文件夹,您需要createDirectoryAtPath:withIntermediateDirectories:attributes:error:

【讨论】:

我试过了,没有创建文件夹...我认为这仅适用于 OSx,不适用于 iOS? 您是否使用YES 作为withIntermediateDirectories: 的参数? NSFileManager *NSFm= [NSFileManager defaultManager]; [NSFm createDirectoryAtPath:@"/var/mobile/Library/APPNAME" withIntermediateDirectories:YES attributes:nil error:nil]; [NSFm createDirectoryAtPath:@"/var/mobile/Library/APPNAME/Documents" withIntermediateDirectories:YES attributes:nil error:nil]; 是我使用的确切代码... 假设/var/mobile/Library/ 存在,您不需要第一次调用,只需要第二次调用。你确定你有正确的写权限吗?它返回什么错误?【参考方案4】:

Superb Techotopia explanation of iOS5 filesystem

【讨论】:

【参考方案5】:

在 Swift 中,如果存在或创建则返回 true。

func ensureDirectoryExists(path:String) -> Bool 

    if !NSFileManager.defaultManager().fileExistsAtPath(path) 
        do 
            try NSFileManager.defaultManager().createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: nil)
         catch 
            print(error)
            return false
        
    
    return true

【讨论】:

以上是关于如何制作iOS目录?的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你制作一款iOS越狱App,伪装微信位置

手把手教你制作一款iOS越狱App,伪装微信位置

如何使用 ios 在其他目录中多次创建新目录

如何从 macOS Swift 上的文档目录加载图像?

如何在 Swift 语言下使用 iOS Charts API 制作漂亮图表

如何在 Gallery App IOS 中显示文档目录中的图像?