假设我在我的iOS应用程序的数据目录中有一个文件夹,其中包含数千个小文件。删除此文件夹(通过[NSFileManagerremoveItemAtPath])需要花费大量时间。但在OSX上,删除具有相同内容的文件夹非常快。它似乎只是从文件系统中取消链接文件夹。那么为什么iOS需要这么长时间?有什么区别?编辑:在iPad3上,删除3个文件夹,每个文件夹包含5,000到9,000个文件,大约需要35秒。在旧版RetinaMBP上运行的模拟器上,大约需要1.5秒。 最佳答案 Thehierarchicalstructurethatyouse
为什么像NSFileManager类的moveItemAtURL:toURL:error:这样的URL方法比像moveItemAtPath:toPath:error:这样的Path方法被推荐>? 最佳答案 创建NSURL对象时,还会检查路径是否有效,否则不会创建对象。即使路径无效,也会创建路径。根本没有检查。 关于ios-NSFileManagerURL与路径,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.
我可以使用条件setUbiquitous:YES将文件从本地目录移动到iCloud。文件已成功移动。如果文件较大,需要一定的时间才能完成移动。有什么方法可以识别文件是否已完成移动到iCloud?预先感谢您的回答。 最佳答案 注意:我自己没有做过,所以下面的所有信息都纯粹来自阅读文档:NSMetadataItem类有一个名为NSMetadataUbiquitousItemIsUploadedKey的属性键。了解这一点后,您应该能够设置一个NSMetadataQuery,在项目上传后通知您。
您将如何使用NSFileManager监控目录?我希望能够在我的应用程序运行时检测文件何时被删除/添加到我的文档目录中。 最佳答案 这是我自己用Swift编写的DirectoryWatcher版本,使用GCD而不是Mach,并使用闭包而不是委托(delegate)importFoundation@objcpublicclassDirectoryWatcher:NSObject{overridepublicinit(){super.init()}deinit{stop()}publictypealiasCallback=(_direc
我正在尝试对使用NSFileManager检查文件是否存在并删除文件的方法进行单元测试。我不确定我是否正确设置了模拟对象。我得到“方法未被调用”,即使我确定它是。我是否在设置过程中遗漏了什么?我按如下方式设置模拟对象:-(void)testdeleteFileWithPath{idfileManagerMock=OCMClassMock([NSFileManagerclass]);OCMStub([NSFileManagerdefaultManager]).andReturn(fileManagerMock);NSString*filePath=@"testPDF.pdf";NSURL
现在我正在开发一个需要NSFileManager的iOS应用程序,但是当我执行attributesOfItemAtPath:方法时,它返回null。这在NSData和dataWithContentsOfFile:方法上也会失败。我不明白为什么会这样。我使用的文件URL看起来像这样:file://localhost/private/var/mobile/Applications/597DE145-33D7-4F92-AE95-029D5CF15291/tmp/Kv7DWqtRWH7WnN47HdDW。我怀疑它可能与网址有关,但我不确定。 最佳答案
我的应用程序将一些文件写入文件系统,它安装在/Application而不是/var/mobile/Application,在我开发的iPhone上,一切正常。但是当分发给其他人时,他们得到“Cocoaerror513".Thefilesarewrittenat/var/mydir/files,那是什么问题?在获得完全许可的情况下,我应该在哪里写作?谢谢。代码:NSString*dir=@"/var/mydir/docs/";NSFileManager*fileManager=[NSFileManagerdefaultManager];if(![fileManagerfileExists
我正在编写一个iOSiPad应用程序,它将从网络下载数百个大型PDF文件并将它们缓存在iPad上以供离线使用。将它们存放在iPad上的最佳位置在哪里?本地文件系统、核心数据或其他地方?我计划将核心数据用于索引和搜索机制(使用缩略图等),并且只会在用户特别请求完整文档时访问PDF文档。 最佳答案 这样做的最佳位置是Documents目录或Cache目录。Documents目录中的文档应该是用户生成的内容,所以我相信这不是您要查找的内容。相反,我认为您应该使用Cache目录,您可以使用以下方法访问该目录:-(NSString*)cach
我正在尝试设置一个缓存目录以供在我的应用程序中使用,但由于我不知道的原因没有创建文件。我究竟做错了什么?以下是我正在使用的方法:在类实用程序中:+(NSString*)imageCachePath{NSString*cacheDirectory=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)objectAtIndex:0];NSString*pieceImagesDirectory=[cacheDirectorystringByAppendingPathComponent:@"Pi
在我的缓存目录中,我有一个名为Example的文件夹。在那个Example文件夹中,我有子文件夹CSS、JS。现在我想删除CSS子文件夹。我没有得到我使用了下面编写的代码。如果我使用它,我的整个Example文件夹将被删除。NSFileManager*fileManager=[NSFileManagerdefaultManager];NSString*cacheFolderPath=[NSSearchPathForDirectoriesInDomains(NSCacheDirectory,NSUserDomainMask,YES)objectAtIndex:0];NSError*err