zoukankan      html  css  js  c++  java
  • Swift 拷贝文件夹,实现文件夹内容整体复制

    我们知道,在沙盒内,iOS要拷贝一个文件,可以使用

    fileManager.copyItem(atPath: fullPath, toPath: fulltoPath)

    方法简单实现,不过当我们要拷贝的是一个整体文件夹(内部包含自文件夹等等)的话,该如何实现?

    我自己测试了下,发现依然可以很便捷到实现

    比如:我要实现下图的文件夹拷贝,将cssjs文件夹整体拷贝到cssjs_temp内。

     =====》

    实现:

     /// 拷贝文件夹
        ///
        /// - Parameters:
        /// - fpath: 原始路径,绝对路径
        /// - tpath: 目标路径,绝对路径,注意:这里tpath路径必须包含目标文件夹名称,否则拷贝不了
        func copyFile(fpath:String,tpath:String) {
            do{
                //如果已存在,先删除,否则拷贝不了
                let fileManager = FileManager.default
                if fileManager.fileExists(atPath: tpath){
                    try fileManager.removeItem(atPath: tpath)
                }
                
                try fileManager.copyItem(atPath: fpath, toPath: tpath)
                
            }catch{}
            
        }

    这里有几个小注意点:

    1、目标路径,要带上文件夹名称,而不能只写父路径,比如上文到目标路径必须这样:xxx/html/cssjs_temp/cssjs  ,带上最后的cssjs

    2、如果要重命名,只需要将  xxx/html/cssjs_temp/cssjs_newName的最后文件夹名称修改即可(cssjs_newName就是你要的新名称)。

    3、如果是覆盖拷贝,就是说目标路径已存在此文件夹,我们必须先删除,否则提示make directory error(当然这里最好做一个容错处理,比如拷贝前先转移到其他路径,如果失败,再拿回来)

    结束~

    最后引申一下,最初我的需求 ,是将项目的文件,拷贝到沙盒内。

    其原理是一样到,只不过项目内文件到路径与沙盒有点区别而已。

    获取项目内文件路径:

      Bundle.main.path(forResource: <#T##String?#>, ofType: <#T##String?#>)
      Bundle.main.path(forResource: <#T##String?#>, ofType: <#T##String?#>, inDirectory: <#T##String?#>)

    一个是无实体路径,一个有实体路径。

    然后依然调用上文到拷贝方法即可。

  • 相关阅读:
    基于Windows Mobile 5.0的GPS应用程序开发
    iis6应用程序池被自动禁用问题 应用程序池'DefaultAppPool' 被自动禁用
    Axapta物流模块深度历险(八)
    AX的报表服务器(一)
    AX的企业门户(一)
    SQL Server2005 Reporting Services 管理站点
    SQL Server2005 Reporting Services的卸载
    耐心的解决问题
    危险操作符
    慢慢的坚持啊
  • 原文地址:https://www.cnblogs.com/yajunLi/p/9584937.html
Copyright © 2011-2022 走看看