zoukankan      html  css  js  c++  java
  • Adnroid提高效率之资源文件改名

    在做开发过程中,经常会遇到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


  • 相关阅读:
    [翻译] SVProgressHUD
    使用CoreData [4]
    Android学习笔记之AndroidManifest.xml文件解析
    Android 版本自动更新
    两个android程序间的相互调用(apk互调)
    Android 生成含签名文件的apk安装包
    【已解决】Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8
    android adt与android sdk有什么关系,他们在开发中各起到什么作用
    Please ensure that adb is correctly located at……问题解决方案
    安装Android SDK时,点击SDK Manager.exe闪退,并且jdk的环境变量是对的。
  • 原文地址:https://www.cnblogs.com/hbolin/p/11320979.html
Copyright © 2011-2022 走看看