当前位置: 首页 > 知识库问答 >
问题:

将文件从文档移动到tmp XCode 8 iOS 10

微生承业
2023-03-14

我正在将我的应用程序从XCode7和iOS9.x移植到XCode8和iOS10。我正在为处理这些文件而苦苦挣扎。

    AFURLSessionManager *manager = ...

    NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
        NSURL *documentsDirectoryPath = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]];
        return [documentsDirectoryPath URLByAppendingPathComponent:[response suggestedFilename]];
    } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
        if(error) {
            ...
        } else {

            NSFileManager *fileManager = [NSFileManager defaultManager];

            NSError *error;
            NSString *tmpDirectory = NSTemporaryDirectory();
            NSString *tmpPDFPath = [tmpDirectory stringByAppendingPathComponent:[[response suggestedFilename] stringByReplacingOccurrencesOfString:@" " withString:@""]];

            if ([fileManager fileExistsAtPath:tmpPDFPath] == YES) {
                [fileManager removeItemAtPath:tmpPDFPath error:&error];
            }

            NSLog(@"readable %d", [fileManager isReadableFileAtPath:filePath]);
            // Print TRUE
            NSLog(@"tmpWritable %d", [fileManager isWritableFileAtPath:[NSURL URLWithString:tmpDirectory]]);
            // Print TRUE

            BOOL move = [fileManager moveItemAtPath:filePath toPath:tmpPDFPath error:&error];

            ...
        }
    }];

错误域=nscocoaErrorDomain代码=4“”xxxx.pdf“无法移动到”tmp“,因为前者不存在,或者包含后者的文件夹不存在。”userInfo={nsSourceFilePatherRokey=/file:/users/xxx/Library/Developer/CoreSimulator/Devices/24CAB2B2-F495-4CFF-90A7-5C51AF38C194/Data/Containers/Data/Application/3D8EEEF9-F639-4D6C-BD5E-17A571F7B836/Documents/xxx.pdf,nsUserStringVariant=(Move),nsFilePath=/file:

已经有人处理过那种错误了吗?

共有1个答案

唐腾
2023-03-14

我的第一个解决方法是通过NSDATA:

 NSError* errorWrite = nil;
 NSData* data = [NSData dataWithContentsOfURL:filePath];
 BOOL write = [data writeToFile:tmpPDFPath options:NSDataWritingAtomic error:&errorWrite];

这段代码工作得很好,但我想理解为什么前面的代码不行。

 类似资料:
  • 将文件从documentdirectory移动到子目录的简单脚本不起作用 移动失败,错误为:操作无法完成。(可可错误4。) 我用Xcode的模拟器来尝试它。下面的函数返回true,因为文件存在于DocumentDirectory中。此外,destinationfolder存在,destinationfolder为空。 /Users/RWollenSchlaeger/Library/Develope

  • 问题内容: 我已经尝试了两天以上,将文件写入iCloud驱动器。我尝试直接在本地编写一个简单的文本文件,然后使用UIDocumentMenuViewController等将其移动。我的代码并没有逐步通过调试程序,但没有出现任何错误,但是看起来很成功,但是当我检查文件是否存在或至少iCloud目录中没有任何内容。我在模拟器和iPhone上都进行了尝试,触发了iCloud同步以及我能想到的所有其他功能

  • 我需要将所有文件从Camel监控的导入目录移动到另一个目录。为此,我在路由中使用了Camel的移动和移动失败选项。 我在属性文件中有一个MaxFilesAllowedInArchive参数,如果超过文件限制,则必须删除最旧的文件。 如何进行自定义移动和移动无法控制移动的文件数量并将最新文件保存在存档中?

  • 我在数据库中创建了一个连接到我的blob存储的挂载,并且我能够使用笔记本将文件从blob读取到数据库。 然后我使用pyspark将. txt转换为json格式,现在我想将其加载回blob存储。有人知道我会怎么做吗? 以下是我尝试过的一些事情: <code>my_json.write。选项(“header”,“true”).json(“mnt/my_mount/file_name.json”) <

  • 我相当愚蠢地上传了一个vhd到Azure文件存储,以为我可以从它创建一个虚拟机,却发现它真的需要在Blob存储中。 我知道我可以再上传一次,但它非常大,我的上传速度非常慢。 我的问题是-我可以将文件从文件存储移动到blob存储,而无需再次下载/上传吗?也就是说,Azure门户UI中是否有任何东西可以执行此操作,甚至是PowerShell命令?

  • 我有一个包含10个图像的文件夹,我希望根据其当前文件名将其移动到一个新文件夹中。我已经成功地将文件夹中的每个图像移动到了一个新文件夹中,到目前为止,我已经成功地将每个图像文件名移动到了它自己的文件夹中,但我还没有弄清楚如何将具有相同文件名的所有图像移动到一个文件夹中,然后将另一个移动到另一个文件夹中。例如,下面我想相应地移动图像。 1600_01.jpg--- 到目前为止,这是我的代码,通过根据图