package com.meng.javase;
import java.io.*;
public class KaoBeiTest02 {
//放到想要放的目录下,比如我要放到E盘menglalalala目录下,如果没有会新建的
static String nf = "E:\\什么是Build Path";
public static void main(String[] args) {
//首先判断目录或者文件是否存在,不存在就创建
File newFile = new File(nf);
if (!newFile.exists()) {
newFile.mkdirs();
}
//要提取的文件
File file = new File("E:\\哔哩哔哩\\461754827");
//把视频复制到指定文件夹并根据info文件信息更改文件名
getDirName(file);
deleteOtherFile(file);
System.out.println("文件移动改名成功,并将源文件删除!");
}
private static void getDirName(File file) {
String newFileName = null;
//遍历获得biliFile文件对象,获得里面每一个文件和文件夹对象
File[] files = file.listFiles();
//再遍历获得的对象,进行判断
for (File fn : files) {
//判断是否是文件
if (fn.isFile()) {
//是文件,就获取该文件对象名的字符串
String fileName = fn.getName();
//1.判断文件名是否是以info结尾
if (fileName.endsWith("info")) {
try {
//新建字符输入流
BufferedReader br = new BufferedReader(new FileReader(fn));
//读取文件中第一整行的字符串
String line = br.readLine();
//把读取到的字符串,先按照字符串"PartName":"进行切割成两个部分,并存入split1数组中
String[] split1 = line.split("\"PartName\":\"");
//再对后半部的字符串按照字符串","进行切割并存入name数组中
String[] split2 = split1[1].split("\",\"");
//找"PartNo":"
String[] split3=line.split("\"PartNo\":\"");
//再找","后面的视频顺序号
String[] split4=split3[1].split("\",\"");
//那么split2数组中0索引处的字符串就是我们需要提取的文件
//拼接新文件名路径字符串
newFileName = split4[0]+"_"+split2[0] + ".mp4";
br.close();
} catch (Exception e) {
e.printStackTrace();
}
//2.判断文件名是否是以mp4结尾
} else if (fileName.endsWith("mp4")) {
String oldPath =fn.getAbsolutePath();
String newPath =nf+"\\"+newFileName;
File nfp=new File(newPath);
boolean b= fn.renameTo(nfp);
if(b==false){
System.out.println("文件"+newFileName+"移动失败");
System.exit(0);
}
}
} else {
//是文件夹就继续递归
getDirName(fn);
}
}
}
public static void deleteOtherFile(File file){
File[] files=file.listFiles();
for(File file1:files){
if(file1.isFile()){
file1.delete();
System.out.println("成功delete");
}else{
deleteOtherFile(file1);
}
}
file.delete();
}
}
引用下面博主的
https://blog.csdn.net/WECHS2017/article/details/115249603?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-1.control&spm=1001.2101.3001.4242