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

将文件从主文件夹移动到子文件夹失败

裴兴言
2023-03-14

将文件从documentdirectory移动到子目录的简单脚本不起作用

移动失败,错误为:操作无法完成。(可可错误4。)

var fileManager : NSFileManager = NSFileManager.defaultManager()
var folderDocuments = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String

func moveFile(fileDirSource: String, fileDirDestination: String, fileName: String) -> Bool
{
    var error: NSError?
    
    var filePathSource : String = folderDocuments
    if(fileDirSource != "")
    {
        filePathSource = folderDocuments.stringByAppendingPathComponent(fileDirSource)
    }
    
    
    filePathSource = filePathSource.stringByAppendingPathComponent(fileName)
    
    var filePathDestination : String = folderDocuments.stringByAppendingPathComponent(fileDirDestination)
    filePathDestination = filePathDestination.stringByAppendingPathComponent(fileName)
    
    println(filePathSource)
    println(filePathDestination)
    
    if self.checkIfFileExists(filePathSource)
    {
        if fileManager.moveItemAtPath(filePathSource, toPath: filePathDestination, error: &error)
        {
            println("Move successful")
            return true
        }
        else
        {
            println("Moved failed with error: \(error!.localizedDescription)")
            return false
        }
    }
    else
    {
        return false
    }
}

我用Xcode的模拟器来尝试它。下面的函数返回true,因为文件存在于DocumentDirectory中。此外,destinationfolder存在,destinationfolder为空。

func checkIfFileExists(fileNameWithPath: String) -> Bool
{
    return fileManager.fileExistsAtPath(fileNameWithPath)
    
}

/Users/RWollenSchlaeger/Library/Developer/CoreSimulator/Devices/111A9376-75A8-45CD-86DA-BDA53D8B4EDB/Data/Containers/Data/Application/5C01BB3D-586E-409D-9378-BEFFE91A410B/Documents/Input/DoNe_123.txt

下面是AppDelegate的功能,我从这里开始移动文件:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    let splitViewController = self.window!.rootViewController as! UISplitViewController
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
    navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
    splitViewController.delegate = self

    let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController
    let controller = masterNavigationController.topViewController as! MasterViewController
    controller.managedObjectContext = self.managedObjectContext
    let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    println("App Path: \(dirPaths)")
    
    // Folder for the files would be created if not exist
    var fileshandling = Filehandling()
    var arrFoldername = ["Inbox","Outbox","Files"]
    
    for foldername in arrFoldername
    {
        if(!fileshandling.checkIfFolderExist(foldername))
        {
            fileshandling.mkdir(foldername)
        }
        else
        {
            println("The Folder " + foldername + " exists")
        }
    }
    
    fileshandling.moveFile("", fileDirDestination: "Input", fileName: "done_123.txt")
    println("UUID string: \(uuid)")
    
    return true
}

这是Xcode中的控制台,当我开始运行我的应用程序时

应用程序路径:>[/Users/RWollenSchlaeger/Library/Developer/CoreSimulator/Devices/111A9376-75A8-45CD-86DA-BDA53D8B4EDB/Data/Containers/Data/Application/CE93DA6D-8125-48B8-B4EB-C9B706A3A1DA/Documents]

文件夹收件箱存在

文件夹发件箱存在

/Users/RWollenSchlaeger/Library/Developer/CoreSimulator/Devices/111A9376-75A8-45CD-86DA-BDA53D8B4EDB/Data/Containers/Data/Application/CE93DA6D-8125-48B8-B4EB-C9B706A3A1DA/Documents/DONE_123.txt

/Users/RWollenSchlaeger/Library/Developer/CoreSimulator/Devices/111A9376-75A8-45CD-86DA-BDA53D8B4EDB/Data/Containers/Data/Application/CE93DA6D-8125-48B8-B4EB-C9B706A3A1DA/Documents/Input/DoNe_123.txt

移动失败,错误为:操作无法完成。(可可错误4。)

UUID字符串:027E0494-3E24-45B8-A2AC-7E3501BED78A

共有1个答案

彭阳朔
2023-03-14

Cocoa error 4这里表示您正在尝试移动一个不存在的文件,或者这也可能表示目标目录不存在。

 类似资料:
  • 问题内容: 如何使用Java将所有文件从一个文件夹移动到另一文件夹?我正在使用此代码: 但它仅适用于一个特定文件。 谢谢!!! 问题答案: 如果对象指向文件夹,则可以遍历其内容

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

  • 因此,我写了一个脚本,删除一个文件夹,然后将该文件移动到它自己删除的文件夹。文件夹可以很好地放下,但文件不会移动。有人能看出我的代码有什么问题吗?或者给我一个更好的方法来移动文件。我也没有收到关于尝试移动文件的错误消息。 我有一个程序,我用它把VBS变成和EXE,所以你可以看到“file.exe”,这真的是。VBS本身

  • 我正在尝试创建一个PowerShell脚本,当我的电脑打开时,我可以每天早上运行该脚本,以移动我最近下载的所有类型。x从文件夹y到目标z。 当我运行该代码时,我得到这个错误:

  • 我有一个Windows文件夹结构和文件,如下所示 c:\源文件\file1.txt c:\源文件夹\subfolder1\file2.txt c:\源文件夹\子文件夹2\file3.txt 我想复制所有文件到目标文件夹,如下所示 c:\DestinationFile\file1.txt c:\DestinationFile\file2.txt c:\DestinationFile\file3.tx

  • 问题内容: 情况: 我正在做一个自动化,我必须从一组文件中仅下载CSV文件。现在我只想将CSV文件从一个文件夹移动到另一个文件夹。 题: 您能为我提供代码,以便在文件移动后立即从源文件夹中删除文件吗? 到目前为止,这是我的代码: 编辑:但是我仍然面临一个问题。它会立即下载所有文件,然后删除。但是我的要求是这样的- 它应该下载第一个文件->将下载的文件移到另一个文件夹中->从下载文件夹中删除第一个下