【问题标题】:max length of file name文件名的最大长度
【发布时间】:2011-09-28 17:08:36
【问题描述】:

我正在使用下面的代码将图像保存在NSDocumentDirectory

-(BOOL)saveImage:(UIImage *)image name:(NSString *)name{

    NSString *dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *path = [NSString pathWithComponents:[NSArray arrayWithObjects:dir, name, nil]];

    BOOL ok = [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];

    if (!ok) {
        NSLog(@"Error creating file %@", path);
    } 
    else {
        NSFileHandle* myFileHandle = [NSFileHandle fileHandleForWritingAtPath:path];
        [myFileHandle writeData:UIImagePNGRepresentation(image)];
        [myFileHandle closeFile];
    }
    return ok;
}

名称通常是下载图像的网址。

对文件名的长度有限制吗?你知道有时候 url 可能会超长......

谢谢

【问题讨论】:

    标签: iphone nsfilemanager nsdocumentdirectory


    【解决方案1】:

    看看 syslimits.h:91 中的 PATH_MAX 常量

    ... 
    #define PATH_MAX         1024   /* max bytes in pathname */
    ...
    

    你可以自己测试一下:

    NSLog(@"%i", PATH_MAX);
    

    只是为了确保。

    【讨论】:

    • 同样值得注意的是路径的文件名部分的长度——在同一个标​​题#define NAME_MAX 255中。
    • 这应该包含在答案中
    • 在实践中,根据this post,将应用程序内资源的路径保持在 PATH_MAX 以下可能是明智之举。它建议 932 个字符作为工作最大值,因为在 iTunes/iCloud 备份操作期间使用中间目录显然会导致总路径长度超过 PATH_MAX,从而导致无法备份/恢复您的应用程序。
    • @user2067021 感谢分享该帖子!单击/阅读链接的帖子后只需澄清一点:推荐的工作最大值实际上是 PATH_MAX - 7 或 1017。932 数字是应用程序沙箱后文件名中的字符,通常为 85。因此,它应该安全地使用 PATH_MAX - 7 或 1017 来维护对 iCloud 备份的支持。
    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 2012-10-23
    • 2014-10-15
    • 1970-01-01
    • 2013-01-27
    • 2019-01-28
    • 2011-10-15
    相关资源
    最近更新 更多