91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java怎么實現文件重命名

發布時間:2021-04-14 13:54:48 來源:億速云 閱讀:163 作者:小新 欄目:編程語言

這篇文章主要介紹了java怎么實現文件重命名,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

背景

我們經常在網上下載一些視頻教程,然而這些視頻命名規則各不相同,即使對于相同類型的文件名來說,當文件數量很大且文件名全部是中文時,文件排序是非規則的,因此本篇博客主要講解一種改變文件夾名稱使得文件按照規律進行排序。

思路

根據文件名對文件進行排序,然后重命名文件即可。

代碼

規則:如 將文件名中帶有 “第八講 ”替換成“8”:

構建排序規則

/***
 * @param filePath 文件夾位置
 * @param startWorld 開始替換的字
 * @param endWorld 結束替換的字
*/
  private void ReName(String filePath, String startWorld, String endWorld) {
    File file = new File(filePath);
    if (!file.exists() || !file.isDirectory()) {
      System.out.println("文件不存在");
      return;
    }
    String[] list = file.list();
    //以 第xxx講-文件全名 的鍵值對存儲文件
    HashMap<String, String> paths = new HashMap<String, String>();
    for (String str : list) {
      int start = str.indexOf(startWorld) + 1;
      int end = str.indexOf(endWorld);
      if (start != 0 && end != -1) {
        paths.put(str.substring(start, end), str);
      } else {
        System.out.println("文件 " + str + " 不滿足替換條件");
      }
    }
    //對文件名進行排序
    orderPath(filePath, endWorld, paths);
  }

排序

private void orderPath(String filePath, String endWorld,
      HashMap<String, String> paths) {
    if (paths.isEmpty()) {
      return;
    }
    TreeMap<Integer, String> map = new TreeMap<Integer, String>();
    for (String str : paths.keySet()) {
      map.put(parseInt(str), paths.get(str));
    }
    //重命名該文件
    ReNameFile(filePath, endWorld, map);
  }

重命名

private void ReNameFile(String filePath, String endWorld,
      TreeMap<Integer, String> map) {
    for (int i : map.keySet()) {
      String path = map.get(i);
      File f = new File(filePath + File.separator + path);
      File dest = new File(filePath + File.separator + i
          + path.substring(path.indexOf(endWorld) + 1));
      if (f.exists() && !dest.exists()) {
        f.renameTo(dest);
      }
      f = null;
      dest = null;
    }
  }

將中文描述的數字轉換為數字,如將 一百二十轉換為120

private int parseInt(String str) {
    if (str.length() == 1) {
      if (str.equals("十")) {
        return 10;
      }
      return getInt(str.charAt(0));
    } else {
      StringBuffer sb = new StringBuffer();
      for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        if (c != '百' && c != '十') {
          sb.append(getInt(c));
        }
      }
      int res = Integer.parseInt(sb.toString());
      if (str.charAt(str.length() - 1) == '百') {
        res *= 100;
      } else if (str.charAt(str.length() - 1) == '十') {
        res *= 10;
      }
      if (str.charAt(0) == '十') {
        res += 10;
      }
      return res;
    }
  }

完整代碼

import java.io.File;
import java.util.HashMap;
import java.util.TreeMap;

/**
 * 將一個文件夾中所有滿足條件的文件名替換
 * <p>
 * 條件:將從開始字到結束字的字符串替換成對應的數字
 * <p>
 * 如:第八講 替換成 8
 */
public class Main {

  public static void main(String[] args) {
    Main m = new Main();
    // 文件夾位置
    String filePath = "D:\\新建文件夾\\OOAD與UML教學視頻";
    // 從哪個字(startWorld)開始替換到哪個字(endWorld)結束
    String startWorld = "第";
    String endWorld = "講";
    m.ReName(filePath, startWorld, endWorld);
  }

  /***
   * @param filePath 文件夾位置
   * @param startWorld 開始替換的字
   * @param endWorld 結束替換的字
   */
  private void ReName(String filePath, String startWorld, String endWorld) {
    File file = new File(filePath);
    if (!file.exists() || !file.isDirectory()) {
      System.out.println("文件不存在");
      return;
    }
    String[] list = file.list();
    //以 第xxx講-文件全名 的鍵值對存儲文件
    HashMap<String, String> paths = new HashMap<String, String>();
    for (String str : list) {
      int start = str.indexOf(startWorld) + 1;
      int end = str.indexOf(endWorld);
      if (start != 0 && end != -1) {
        paths.put(str.substring(start, end), str);
      } else {
        System.out.println("文件 " + str + " 不滿足替換條件");
      }
    }
    //對文件名進行排序
    orderPath(filePath, endWorld, paths);
  }

  private void orderPath(String filePath, String endWorld,
      HashMap<String, String> paths) {
    if (paths.isEmpty()) {
      return;
    }
    TreeMap<Integer, String> map = new TreeMap<Integer, String>();
    for (String str : paths.keySet()) {
      map.put(parseInt(str), paths.get(str));
    }
    //重命名該文件
    ReNameFile(filePath, endWorld, map);
  }

  private void ReNameFile(String filePath, String endWorld,
      TreeMap<Integer, String> map) {
    for (int i : map.keySet()) {
      String path = map.get(i);
      File f = new File(filePath + File.separator + path);
      File dest = new File(filePath + File.separator + i
          + path.substring(path.indexOf(endWorld) + 1));
      if (f.exists() && !dest.exists()) {
        f.renameTo(dest);
      }
      f = null;
      dest = null;
    }
  }

  private int parseInt(String str) {
    if (str.length() == 1) {
      if (str.equals("十")) {
        return 10;
      }
      return getInt(str.charAt(0));
    } else {
      StringBuffer sb = new StringBuffer();
      for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        if (c != '百' && c != '十') {
          sb.append(getInt(c));
        }
      }
      int res = Integer.parseInt(sb.toString());
      if (str.charAt(str.length() - 1) == '百') {
        res *= 100;
      } else if (str.charAt(str.length() - 1) == '十') {
        res *= 10;
      }
      if (str.charAt(0) == '十') {
        res += 10;
      }
      return res;
    }
  }

  private int getInt(char c) {
    int res = -1;
    switch (c) {
    case '一':
      res = 1;
      break;

    case '二':
      res = 2;
      break;
    case '三':
      res = 3;
      break;
    case '四':
      res = 4;
      break;
    case '五':
      res = 5;
      break;
    case '六':
      res = 6;
      break;
    case '七':
      res = 7;
      break;
    case '八':
      res = 8;
      break;
    case '九':
      res = 9;
      break;
    case '零':
      res = 0;
      break;
    }
    return res;
  }
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“java怎么實現文件重命名”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿合奇县| 厦门市| 白沙| 永嘉县| 兴化市| 晋城| 永登县| 颍上县| 灵石县| 镇雄县| 宣汉县| 姜堰市| 安宁市| 麦盖提县| 濮阳市| 布尔津县| 洞头县| 福州市| 班戈县| 新乐市| 如东县| 江门市| 临澧县| 乳山市| 谷城县| 蓬莱市| 黄冈市| 巴林左旗| 阜阳市| 阳泉市| 延吉市| 台州市| 准格尔旗| 门源| 思南县| 石嘴山市| 澄城县| 淄博市| 交城县| 社会| 龙口市|