使用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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章