代码之家  ›  专栏  ›  技术社区  ›  Alfonso Tesauro

当使用NSFileWrapper时,有没有一种方法可以通过多次写入NSData对象块来处理巨大的输出文件?

  •  0
  • Alfonso Tesauro  · 技术社区  · 6 年前

    NSFileWrapper *bundleFileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil];
    
    NSDictionary *fileWrappers = [bundleFileWrapper fileWrappers];
    
    if ([fileWrappers objectForKey:mboxFileName] == nil) {
        NSFileWrapper *textFileWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:mboxData];
        [textFileWrapper setPreferredFilename:mboxFileName];
        [bundleFileWrapper addFileWrapper:textFileWrapper];
    }
    NSError *error;
    
    BOOL success = [bundleFileWrapper writeToURL:[NSURL fileURLWithPath:path] options:NSFileWrapperWritingAtomic originalContentsURL:NULL error:&error];
    
    NSLog(@"Error = %@",[error localizedDescription]);
    

    我的问题是,我最终使用非常大的NSData对象,这种方法需要大量内存。有没有一种方法可以使用NSFileWrapper按顺序编写小的NSData对象?非常感谢您的帮助。

    1 回复  |  直到 6 年前
        1
  •  1
  •   James Bucanek    6 年前

    NSFileWrapper 你的大数据文件。使用 对于目录结构,但是直接写大数据文件( open write , ...).

    另外,不要羞于自己创建目录结构。一个包可以很简单,从字面上说,就是一个带有扩展名的文件夹。还有大量的O-O api( NSURL , NSFileManager ,…)来帮助您检查和操作其内容。

    推荐文章