在做开发过程中,经常会遇到UI设计提供得资源文件如下所示:
经常把相同的文件有个@2x,@3x放到同一个目录中。
但是这并不是我们想要的,通常在android开发过程中,都是需要分别放到drawable,drawable-xhbpi,drawable-xxhbpi等等相对应的目录中。
如何处理呢?
1、最最不靠谱的方式就是一个个分开拷贝到android的drawable,drawable-xhbpi,drawable-xxhbpi中。效率实在底下。
2、写代码来重命名和移动才是比较靠谱的。因为我不会js,python这样子的脚本语言。我使用java来写,也是效果一样。
项目结构:
代码:
import java.io.* import java.util.* import java.io.File fun main() { // 1.读取配置文件 val pro = Properties() try { val directory = File("")//参数为空 val courseFile = directory.canonicalPath val propertiesPath = "$courseFile\src\modify.properties" println("配置文件路径:$propertiesPath") val fis = FileInputStream(propertiesPath) val isr = InputStreamReader(fis, "GBK") pro.load(isr) fis.close() isr.close() } catch (e: FileNotFoundException) { System.err.println("当前配置文件不存在") return } catch (e: IOException) { System.err.println("读取配置文件失败") return } // 2.读取配置文件内容 // 需要去掉文件名中的字符 val deleteString = pro["delete"] as String // 资源文件的目录 val srcDirName = pro["srcDir"] as String // 输入文件的目录 val targetDir = pro["targetDir"] as String println("delete:$deleteString") println("srcDirName:$srcDirName") println("targetDir:$targetDir") val srcDirFile = File(srcDirName) println("资源文件目录是否存在:${srcDirFile.absolutePath} 是否存在:${srcDirFile.exists()}") println("资源文件目录是否存在:${srcDirFile.absolutePath} 是否是目录:${srcDirFile.isDirectory}") if (srcDirFile.isFile) { System.err.println("资源文件应该配置为目录:$srcDirName") return } // 3.判断目标目录是否存在,不存在,则创建 val targetDirFile = File(targetDir) if (!targetDirFile.exists()) { val isSuccess = targetDirFile.mkdirs(); println("当前目标目录不存在,是否创建成功:$isSuccess") if (!isSuccess) { System.err.println("当前目标目录创建失败:${targetDirFile.absolutePath}") return } } val srcFileList = srcDirFile.listFiles() if (srcFileList == null) { System.err.println("该目录下未找到文件:$srcDirName") return } // 4.循环遍历资源目录下的文件,重命名并移动到目标目录下 for (f in srcFileList) { if (f.name.contains(deleteString)) { val newFileName = f.name.replace(deleteString, "") val newFile = File(targetDirFile.absolutePath + "\" + newFileName) if (newFile.exists()) { val isDeleteSuccess = newFile.delete() if (!isDeleteSuccess) { System.err.println("删除已存在的文件失败") return } } println("新文件名:$newFileName" + " -- 新路径:${newFile.absolutePath}") f.copyTo(newFile) } } println("!!!!!!!!!!!!!!!!!处理成功!!!!!!!!!!!!!!!!!") }
配置文件 modify.properties :
delete=@2x
srcDir=D:\项目\6.设计图\icon
targetDir=D:\项目\6.设计图\icon2