首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSFileWrapper进行写入与使用NSFileManager进行拷贝

使用NSFileWrapper进行写入与使用NSFileManager进行拷贝
EN

Stack Overflow用户
提问于 2014-03-25 19:53:42
回答 1查看 566关注 0票数 1

两者之间有区别吗?

代码语言:javascript
复制
NSURL *referenceURL, *destinationURL ;

[[[NSFileManager alloc] init] copyItemAtURL:referenceURL
                                      toURL:destinationURL
                                      error:NULL] ;

代码语言:javascript
复制
NSURL *referenceURL, *destinationURL ;
NSFileWrapperWritingOptions options ;

NSFileWrapper * fileWrapper = [[NSFileWrapper alloc] initWithURL:referenceURL
                                                         options:0
                                                           error:NULL] ;
[fileWrapper writeToURL:destinationURL
                options:options
    originalContentsURL:nil
                  error:NULL] ;

(特别是,取决于选项的值;这里的选项的最佳选择是什么?)?

我问这个问题是为了更好地理解NSFileWrapper。我看到我可以在我的代码中选择使用其中一个。我猜答案可能涉及到对“硬链接”的考虑。

PS:我想在后台使用这些方法中的任何一种。

EN

回答 1

Stack Overflow用户

发布于 2014-03-26 23:55:00

要在后台使用它,请使用NSThread在mainThread下面创建一个(第二个或更多)线程。

我没有用过NSFileWrapper,但用过很多NSFileManager。使用哪一个取决于你希望你的应用程序处理文件/文件夹/链接的内容(以及方式)。

无论如何,在阅读完文档后,我对您有一些建议:

FM使用文件、文件夹、链接的文本路径/URL。当使用FM复制应用程序(-file)时,它通常会失败,因为应用程序不是文件,而是一种特殊类型的文件夹=文件包,通常包含具有有限读写权限的文件/文件夹。复制文件夹及其内容将导致该文件夹的更改日期发生更改,因为该文件夹是先创建的,然后才更改其内容!也许你不想要这样的改变。

FW使用属于给定路径/URL的节点(可以看作是一种容器,其中包含有关文件系统中某个对象的信息和其他数据)。创建FW后,路径可能会更改,但FW仍可访问文件、文件夹和链接。它还节省了磁盘空间和时间,如果复制的对象没有更改,只在节点中硬链接,而不是真正地再次复制整个文件。

写入选项"NSFileWrapperWritingAtomic“确保文件包确实被完全复制,而不是像FM那样发生中断的复制过程。然后,在不知道进程何时停止的情况下,得到了一个不完整的文件包。我猜(!),可以完全复制应用程序,独立于所包含文件/文件夹的读/写权限,也可以临时更改这些权限以完成任务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22633821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档