使用Java NIO 批量重命名 bilibili 本地視頻文件

0. 老版的方法如下

請先閱讀老版重命名的方法,點擊此處

1. 思路修改

  1. 遍歷視頻全集文件夾
  2. 讀取以info結尾的文件,獲取“PartName”的值
  3. 重命名文件和移動文件到指定位置

2. 代碼實現

import com.alibaba.fastjson.JSON;
import org.apache.commons.io.FileUtils;
import org.junit.Test;

import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;

/**
 * @ClassName TestJsonToJsonObj
 * @Description 測試json字符串,轉成json對象
 * @Author 落在牛背上的鳥
 * @Date 2020/3/14 17:11
 * @Version 1.0
 */
public class TestJsonToJsonObj {
    // 定義全局變量
    String fileName = "";
    @Test
    public void testJSONToJSONObj() {
        
        try {
            // Java NIO 中的方法,遍歷指定文件夾下的所有文件夾和文件
            Files.walkFileTree(Paths.get("F:\\bilibili new\\54029771\\"), new SimpleFileVisitor<Path>() {
                /**
                 * 訪問file文件時觸發該方法
                 * @param file  指定的文件夾
                 * @param attrs
                 * @return
                 * @throws IOException
                 */
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                    // 重命名後的文件夾路徑
                    String path = "F:\\bilibili new\\Java 數據結構和算法\\";
                    // 判斷是否已 info 結尾的文件
                    if (file.getFileName().toString().endsWith("info")) {
                        // 讀取 info 文件的所有行
                        List<String> list = Files.readAllLines(file);
                        for (String s : list) {
                            // 使用 com.alibaba.fastjson.JSON 中的方法,直接獲取到 PartName 的值
                            String name = JSON.parseObject(s).get("PartName").toString();
                            // 構件 新的文件; 目錄 + 文件名 + 後綴名
                            fileName = path + name + ".flv";
                        }
                    }
                    // 判斷是否已 flv 結尾的文件
                    if (file.getFileName().toString().endsWith("flv")) {
                        // 使用 org.apache.commons.io.FileUtils 中的 moveFile 方法,重命名和移動一起搞定
                        FileUtils.moveFile(FileUtils.getFile(file.toString()), FileUtils.getFile(fileName));
                    }
                    // 代表繼續訪問後續行爲
                    return FileVisitResult.CONTINUE;
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 使用到兩個第三方的工具,maven依賴如下:

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.66</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章