バッチでファイル名を自動的に変更する

要求する

android開発として、UIカットをプロジェクトにインポートする必要があることがよくありますが、UIカットファイルは通常中国語で名前が付けられ、androidプロジェクトでは、描画可能なファイル名に中国語の文字を使用できず、英語に大文字を使用することはできません。スペースと読みやすさのために、単語を「_」で区切る必要があるため、カットした画像のファイル名を必要なスタイルに変換する必要があります

成し遂げる

  1. Baidu Universal Translation APIを開くために申請し、「APP_IDとキー」を取得します。これら2つは必須です

    https://api.fanyi.baidu.com/doc/12

    アプリケーションが成功したら、開発者情報で表示できます

  2. コード

    4つのjavaファイルがあります

    MD5、HttpGet、TransApiは、Baiduによって翻訳されたデモファイルです。BaiduTranslateのAPIを使用するには、これらを使用する必要があります。

    https://fanyiapp.cdn.bcebos.com/api/demo/java.zipはリンクからダウンロードできます

    FileNameChangeは、Baiduによって翻訳されたデモのファイルを呼び出すことにより、特定のニーズを実現するファイルです。

    FileNamechange.java

    import org.json.JSONArray;
    import org.json.JSONObject;
    
    import java.io.File;
    import java.io.UnsupportedEncodingException;
    
    /**
     * Created with IntelliJ IDEA.
     *
     * @Auther: jayclin
     * @Date: 2020/09/30/11:53
     * @Description:
     */
    public class FileNameChange {
          
          
        private static final String APP_ID = "";//使用自己的APP_ID
        private static final String SECURITY_KEY = "";//同上
    
        /**
         * 从json字符串中提取英文翻译
         * @param jsonData
         * @return
         */
        private static String parse(String jsonData) {
          
          
            try {
          
          
                JSONObject jsonObject = new JSONObject(jsonData);
                JSONArray results = jsonObject.getJSONArray("trans_result");
                JSONObject result = results.getJSONObject(0);
                return (String) result.get("dst");
            } catch (Exception e) {
          
          
                e.printStackTrace();
                return "";
            }
        }
    
        /**
         * 将path路径下所有的文件名改为英文
         * @param path
         * @throws UnsupportedEncodingException
         * @throws InterruptedException
         */
        public static void changeFileName(String path) throws UnsupportedEncodingException, InterruptedException {
          
          
            TransApi api = new TransApi(APP_ID, SECURITY_KEY);
            File file = new File(path);
            File[] list = file.listFiles();
    
            if (file.exists() && file.isDirectory()) {
          
          
                for (int i = 0; i < list.length; i++) {
          
          
                    String name = list[i].getName();
                    int index = name.indexOf(".");
                    String name2 = name.substring(0, index);//文件名前缀
                    int index2 = name.lastIndexOf(".");
                    String name3 = name.substring(index2);
                    Thread.sleep(1000);//百度API的免费版本1秒只能有一个接入
                    String result = api.getTransResult(name2, "auto", "en");
                    String enString = parse(result);
                    enString=enString.replace("-", "");
                    String newName = enString.replace(' ', '_') + name3;
                    //重命名
                    File dest = new File(path + "/" + newName.toLowerCase());
                    list[i].renameTo(dest);
                    System.out.println(dest.getName());
                }
            }
        }
    
        /**
         * 改变android的Drawable文件夹的不同dp的所有文件名,只需将该drawable文件路径传入
         * @param path
         */
        public static void changeDrawableFile(String path){
          
          
            File file=new File(path);
            File[] list=file.listFiles();
            if (file.exists()&&file.isDirectory()){
          
          
                for (int i=0;i<list.length;i++){
          
          
                    String name=list[i].getName();
                    String newPath=path+"/"+name;
                    try {
          
          
                        changeFileName(newPath);
                    } catch (UnsupportedEncodingException e) {
          
          
                        e.printStackTrace();
                    } catch (InterruptedException e) {
          
          
                        e.printStackTrace();
                    }
                }
            }
        }
    
        public static void main(String[] args) {
          
          
            changeDrawableFile("/Users/mac/Downloads/更多");
        }
    }
    
    
  3. コードが実装された後、実行されます。上記のコードはandroid studioで直接実行することはできず、情報を参照して一時的に解決することはできません。

    したがって、コードはアイデアで実行するなど、Java環境でのみ実行できます。より良い方法がある場合は、コメント領域にメッセージを残すことができます。ありがとうございます。

終わり

最善の方法は見つかりませんでしたが、それでも問題を解決できます。少しでもお役に立てば幸いです。

プロジェクトアドレスhttps://gitee.com/cl1016/file-name-changeは必要に応じて取得できます

おすすめ

転載: blog.csdn.net/weixin_43435453/article/details/109298766