AS3批量替换文件
在做项目时,经过会遇到资源替换问题。比如配音公司,提供了一批八九百个配音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批量替换文件的更多相关文章
- Powershell 批量替换文件
Powershell 批量替换文件 ##作者:Xiongpq ##时间:2015-06-10 18:50 ##版本:2.0 ##源文件目录 ##源文件目录的所有文件都会覆盖目标目录的同名文件,源文件目 ...
- Linux批量替换文件内容
问题描述:现在需要将rack1目录下*.send文件中的"-ip="替换成“-localIp=10.0.0.1/n-ip=” 刚才那个批量文本内容替换,只能替换内存中的内容,并不会 ...
- perl命令批量替换文件内容
转自:http://www.jbxue.com/article/12638.html 使用perl命令批量替换文件内容. 对linux下的文件内容进行替换,有时不用编写perl脚本,用perl命令就可 ...
- linux批量替换文件内容3种方法(perl,sed,shell)
方法1:perl 这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把 ...
- linux下sed批量替换文件内容
在linux超级终端下编辑文档是件比较麻烦的事情,下面简单介绍一下如何在linux下批量替换文件内容 linuxsed 批量替换多个文件中的字符串 格式: sed -i "s/查找字段/替换 ...
- Perl 使用perl命令批量替换文件内容
对linux系统下面多个文本文件内容做处理,是SA经常需要完成的工作.如何高效的完成这个工作,perl应该是一个不错的语言工具.你甚至不需要编写perl脚本,用命令就可以完成上面的工作. perl 命 ...
- [转帖]Linux下批量替换文件内容方法
Linux下批量替换文件内容方法 https://www.cnblogs.com/fjping0606/p/4428850.html 刚才用到的命令 原作者写的挺好的记录一下 以后 用. 1:查找fi ...
- linux下批量替换文件内容
1.网络上现成的资料 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串: (此命令很强大) ...
- Linux下批量替换文件内容方法
1:查找find . -type f -name "*.html"|xargs grep ‘yourstring’ 2:查找并替换find -name '要查找的文件名' | xa ...
随机推荐
- 移动端 H5图片裁剪插件,内置简单手势操作
前面曾经写过一篇<H5图片裁剪升级版>,但里面需要借助第三方手势库,这次就不需要使用手势库,全部封装在代码中. 下图是裁剪的展示,下面就做了拖放和裁剪,没有做缩放,在插件中需要用到大量的计 ...
- final的用法
先来看一段代码 class Car extends Vehicle { public static void main (String[] args) { new C ...
- Maven的简单搭建
Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包.接下来将从下面几个方向介绍maven: (1)Maven简单介绍 (2)Maven安装与配置 (3)Maven ...
- Hopfield神经网络实现污染字体的识别
这个网络的内部使用的是hebb学习规则 贴上两段代码: package geym.nn.hopfiled; import java.util.Arrays; import org.neuroph.co ...
- 学习笔记:javascript 文档对象(document)
1.documnet函数 方法 描述 close() 关闭用 document.open() 方法打开的输出流,并显示选定的数据. getElementById() 返回对拥有指定 id 的第一个对象 ...
- Asp.Net Core 中获取应用程序物理路径(Getting the Web Root Path and the Content Root Path in ASP.NET Core)
如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...
- Linux增加磁盘操作
首先,增加磁盘分为4个大步骤:1.插上硬盘:2.分区;3.格式化4.挂载,然后分别说说以上四步的具体事项和注意内容. 1.插上硬盘(本位以虚拟机为例) 新买来一块磁盘,把磁盘插到主板上.虚拟机中操作如 ...
- java线程总结3--synchronized关键字,原理以及相关的锁
在多线程编程中,synchronized关键字非常常见,当我们需要进行"同步"操作时,我们很多时候需要该该关键字对代码块或者方法进行锁定.被synchronized锁定的代码块,只 ...
- Sqlla: 数据库操作从未如此简单
Sqlla 一套数据库的 ORM 微型库,提供简单高效的 API 来操作数据库. Sqlla 拥有极少的API,使用方式简单.让开发者不需要关心数据库操作的具体细节,只需专注SQL和业务逻辑.同时简单 ...
- linux系统管理--查看进程
关于进程的查看,大家都不会陌生 ,主要是ps和pstree命令. ps aux 查看系统中所有进程,使用BSD操作系统格式.(注意:不是ps -aux) 执行结果 USER :该进程是由哪个用 ...