欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java怎么實(shí)現(xiàn)文件重命名

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

成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)疏勒,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

背景

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

思路

根據(jù)文件名對(duì)文件進(jìn)行排序,然后重命名文件即可。

代碼

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

構(gòu)建排序規(guī)則

/***
 * @param filePath 文件夾位置
 * @param startWorld 開始替換的字
 * @param endWorld 結(jié)束替換的字
*/
  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講-文件全名 的鍵值對(duì)存儲(chǔ)文件
    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 + " 不滿足替換條件");
      }
    }
    //對(duì)文件名進(jìn)行排序
    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;
    }
  }

將中文描述的數(shù)字轉(zhuǎn)換為數(shù)字,如將 一百二十轉(zhuǎn)換為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;

/**
 * 將一個(gè)文件夾中所有滿足條件的文件名替換
 * <p>
 * 條件:將從開始字到結(jié)束字的字符串替換成對(duì)應(yīng)的數(shù)字
 * <p>
 * 如:第八講 替換成 8
 */
public class Main {

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

  /***
   * @param filePath 文件夾位置
   * @param startWorld 開始替換的字
   * @param endWorld 結(jié)束替換的字
   */
  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講-文件全名 的鍵值對(duì)存儲(chǔ)文件
    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 + " 不滿足替換條件");
      }
    }
    //對(duì)文件名進(jìn)行排序
    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;
  }
}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java怎么實(shí)現(xiàn)文件重命名”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

網(wǎng)頁名稱:java怎么實(shí)現(xiàn)文件重命名
當(dāng)前路徑:http://www.aaarwkj.com/article8/gopiop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、營銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
av天堂资源在线播放| 国产精品盗摄一区二区三区 | 亚洲禁看av一区不卡| 亚洲人午夜射精精品日韩| 国产精品日韩一区视频| 久久这里只有精品伊人网| 蜜桃视频在线视频免费观看| 国产午夜18久久久| 亚洲免费一区二区三区精品| 色哟哟视频在线免费观看| 97成人在线视频免费播放| 日韩在线一区中文字幕| 日本女优久久精品观看| 精品久久久久久久久999| 亚洲av精二区三区四区| 欧美香蕉视频一区二区| 日韩在线不卡中文字幕| 亚洲欧美另类不卡专区| 国产精品免费网站在线观看| 六十路人妻一区二区三区| 侵犯人妻中文字幕一区二区| 午夜福利院在线观看免费| 国产日韩精品综合一区| 四虎影院成人精品久久| 国产高清大片一级黄色| 日韩暴露一区二区三区| 日韩精品一区二区毛片| 這裏隻有无码人妻久久| 麻豆国产传媒片在线看| 国产一区丝袜高跟在线| 国产精品国产自产拍高清| 91日韩国产中文字幕| 免费av在线网址网站| 老熟妇奂伦一区二区三区| 91欧美日韩中在线视频| 中文字幕人妻系列东京热| 91欧美精品综合在线| 欧美黄片网站免费观看| 日本精品在线小视频| 国产欧美日韩精品av| 亚洲精品人妻av在线|