在做项目时,经过会遇到资源替换问题。比如配音公司,提供了一批八九百个配音MP3文件,用到后面却发现有些配音不能正常使用。可能是十几个,也可能是一两百个。只能是配音公司重新提供。因为之前的配音资源,已经生成指定的id,只有把替换资源放在相同的文件夹下,并且同名,才能替换使用。用代码实现成批替换:

替换前,目标文件夹:

替换资源文件夹:

替换后,目标文件夹:

打印出提示信息:

实现代码:

package
{
  import flash.display.Sprite;
  import flash.filesystem.File;

  public class batchReplacement extends Sprite
  {
    // arr[0]:需要替换文件夹。 arr[1]:替换资源文件夹
    public var arr:Array = ["C:\\Users\\admin\\Desktop\\targetFile","C:\\Users\\admin\\Desktop\\sourceFile"];

    public var arr1:Array = new Array();
    public var arr2:Array = new Array();
    public var arr3:Array = new Array();

    public function batchReplacement()
    {
      for (var i:int = 0; i<arr.length; i++)
      {
        GetFiles(arr[i]);
      }

      init();
    }

    public function GetFiles(strPath:String):void
    {
      //获取指定路径下的所有文件名
      var directory:File = new File(strPath);
      var contents:Array = directory.getDirectoryListing();
      for (var i:uint = 0; i < contents.length; i++)
      {

        var file:File = contents[i] as File;

        if(file.isDirectory)
        {

          GetFiles(file.nativePath);
        }
        else
        {
          // 遍历目标文件夹里所有文件
          if (file.nativePath.indexOf("targetFile") != -1)
          {
            arr1.push(file.nativePath);
          }
          // 遍历源文件夹里所有文件
          if (file.nativePath.indexOf("sourceFile") != -1)
          {
            arr2.push(file.nativePath);
          }
        }
      }
    }


    public function init():void
    {
      trace("两个文件夹遍历结束! arr1.length:" + arr1.length + ", arr2.length: " + arr2.length);

      for(var i:int = 0; i<arr1.length; i++)
      {
        var str1:String="";
        str1 = arr1[i].substr(arr1[i].indexOf("audio"));

        for (var j:int = 0; j<arr2.length; j++)
        {
          var str2:String="";
          str2 = arr2[j].substr(arr2[j].indexOf("audio"));

          // 对比两个文件夹各自audio目录下的字符串是否相等,相同则替换
          if (str1 == str2)
          {
            var file:File = new File(arr1[i]);
            if(file.exists)
            {
              //把原文件移除到回收站
              file.moveToTrash();

              // 复制新文件
              var oldDir:File = File.documentsDirectory.resolvePath(arr2[j]);
              var newDir:File = File.applicationStorageDirectory.resolvePath(arr1[i]);
              oldDir.copyTo(newDir);

              // arr3数组记录替换资源
              arr3.push(arr2[j]);

              trace("替换文件源文件数组下标:" + j + " : " + newDir.nativePath);
            }
          }
        }
        if (i == arr1.length-1)
        {
          noReplace();
        }
      }
    }

    public function noReplace():void
    {
      // arr2记录源文件和arr3记录替换文件对比,刷选出未被替换文件
      for (var m:int = 0; m<arr2.length; m++)
      {
        for (var n:int = 0; n<arr3.length; n++)
        {
          if (arr2[m] == arr3[n])
          {
            arr2.splice(m,1);
          }
        }
      }


      //打印未替换文件路径
      for (var a:int = 0; a<arr2.length; a++)
      {
        trace("未替换文件路径: " + a + ": "+ arr2[a]);
      }
    }

  }
}

AS3批量替换文件的更多相关文章

  1. Powershell 批量替换文件

    Powershell 批量替换文件 ##作者:Xiongpq ##时间:2015-06-10 18:50 ##版本:2.0 ##源文件目录 ##源文件目录的所有文件都会覆盖目标目录的同名文件,源文件目 ...

  2. Linux批量替换文件内容

    问题描述:现在需要将rack1目录下*.send文件中的"-ip="替换成“-localIp=10.0.0.1/n-ip=” 刚才那个批量文本内容替换,只能替换内存中的内容,并不会 ...

  3. perl命令批量替换文件内容

    转自:http://www.jbxue.com/article/12638.html 使用perl命令批量替换文件内容. 对linux下的文件内容进行替换,有时不用编写perl脚本,用perl命令就可 ...

  4. linux批量替换文件内容3种方法(perl,sed,shell)

    方法1:perl   这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把 ...

  5. linux下sed批量替换文件内容

    在linux超级终端下编辑文档是件比较麻烦的事情,下面简单介绍一下如何在linux下批量替换文件内容 linuxsed 批量替换多个文件中的字符串 格式: sed -i "s/查找字段/替换 ...

  6. Perl 使用perl命令批量替换文件内容

    对linux系统下面多个文本文件内容做处理,是SA经常需要完成的工作.如何高效的完成这个工作,perl应该是一个不错的语言工具.你甚至不需要编写perl脚本,用命令就可以完成上面的工作. perl 命 ...

  7. [转帖]Linux下批量替换文件内容方法

    Linux下批量替换文件内容方法 https://www.cnblogs.com/fjping0606/p/4428850.html 刚才用到的命令 原作者写的挺好的记录一下 以后 用. 1:查找fi ...

  8. linux下批量替换文件内容

    1.网络上现成的资料 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串: (此命令很强大) ...

  9. Linux下批量替换文件内容方法

    1:查找find . -type f -name "*.html"|xargs grep ‘yourstring’ 2:查找并替换find -name '要查找的文件名' | xa ...

随机推荐

  1. [Day01] Python基础

    明天要完成的任务如下:  Python 四则运算 Python 数据结构 Python 元算符(in.not in.is.and.or) 用户输入 (input.raw_input) 流程控制 缩进 ...

  2. ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决

    0. 背景 我们在使用ELK进行日志记录的时候,通过网址在Kibana中查看我们的应用程序(eg: Java Web)记录的日志, 但是默认是任何客户端都可以访问Kibana的, 这样就会造成很不安全 ...

  3. 从性能角度看react组件拆分的重要性

    React是一个UI层面的库,它采用虚拟DOM技术减少Javascript与真正DOM的交互,提升了前端性能:采用单向数据流机制,父组件通过props将数据传递给子组件,这样让数据流向一目了然.一旦组 ...

  4. 关于cisco ccp 或sdm管理gns3中思科路由器的成功分享

    本来工作环境中有一台c1841,闲来无事,升级了最新的IOS=c1841-adventerprisek9-mz.151-4.M6.bin,在xp虚拟机中安装sdm(新windows系统不支持)和在wi ...

  5. @PathVariable和@RequestParam的区别,@SessionAttributes

    简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类: A:处理requet uri部分(这里指uri template中variable,不 ...

  6. [开源] 基于ABP,Hangfire的开源Sharepoint文件同步程序----SuperRocket.SPSync

    (一)项目背景 Sharepoint是微软的一个产品,很多公司都在使用它,也有很多公司以前使用它,现在可能需要移植到别的平台,也可能只是移植其中的文件存储,比如说移植到微软云,或者亚马逊云存储.Sup ...

  7. EMC在线测试题目及答案 绿色为正确答案,红色为错误答案

    1. 以下哪一项技术可以将IT的物理资源放在一个共享池中以及提升它们的利用率? 分区 虚拟化 协调 LUN 屏蔽 2. 哪一项是EMC的基于块-存储(block-based)的高端存储? Atmos ...

  8. 【JavaScript你需要知道的基础知识~】

    最近开始学习JavaScript,整理了一些相关的基础知识 JS注释方式:// 单行注释(Ctrl+/ )/* 段落注释(Ctrl+shift+/ )*/ [JavaScript基础]JavaScri ...

  9. Java 8 Learn Notes

    Main reference: [1] http://winterbe.com/posts/2014/03/16/java-8-tutorial/ [2] https://plus.google.co ...

  10. 【T-SQL性能优化】01.TempDB的使用和性能问题

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 ...