zoukankan      html  css  js  c++  java
  • Adnroid提高效率之资源移动

    在做开发过程中,有时候,需要将某几个,或者某个资源从一个地方拷贝到另外一个地方:

    如何处理呢?

    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\move.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 imgNameString = pro["imgName"] as String
        // 资源文件的目录
        val srcDirName = pro["srcDir"] as String
        // 输入文件的目录
        val targetDir = pro["targetDir"] as String
    
        println("imgName:$imgNameString")
        println("srcDirName:$srcDirName")
        println("targetDir:$targetDir")
    
        val imageNameList = imgNameString.split(",")
    
        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.将资源拷贝到目标目录
        val imgDirList = mutableListOf<String>("drawable", "drawable-mdpi", "drawable-hdpi", "drawable-xhdpi", "drawable-xxhdpi", "drawable-xxxhdpi")
    
        for (imgName in imageNameList) {
            if (imgName.isEmpty()) continue
            for (f in imgDirList) {
                val imgSrcName = srcDirName + "\" + f + "\" + imgName
                val imgSrcFile = File(imgSrcName)
                if (imgSrcFile.exists()) {
                    val imgTargetName = targetDir + "\" + f + "\" + imgName
                    val imgTargetFile = File(imgTargetName)
                    println("$imgSrcName   copyTo   $imgTargetName")
                    imgSrcFile.copyTo(imgTargetFile, overwrite = true)
                }
            }
        }
    
        println("!!!!!!!!!!!!!!!!!处理成功!!!!!!!!!!!!!!!!!")
    }

    配置文件 move.properties :

    imgName=ic_action_copy.png,ic_action_delete.png
    srcDir=D:\Work\WorkSpace\AndroidDemo\ChatKit-master\sample\src\main\res
    targetDir=D:\temp



  • 相关阅读:
    Oracle -- Create Tablespace
    EntityFramework-DBFirst-重新生成后写的验证消失(解决办法)
    UILocalNotification本地通知
    属性观察者willSet与didSet
    常用后台frame框架
    Windows常用CMD命令
    常用的格式符与转义字符
    Windows操作系统常用快捷键
    Mac操作系统常用快捷键
    srp render queue 失效
  • 原文地址:https://www.cnblogs.com/hbolin/p/11341379.html
Copyright © 2011-2022 走看看