bilibili 移动 视频解密(也不算是解密)一条龙
作者:互联网
package com.wang.cong.niubi;
import java.io.*;
/*
* 移动源文件,并且把空目录删除
* */
public class Test02 {
//放到想要放的目录下,比如我要放到D:\\备份\\哈哈哈文件夹下,如果没有会新建的
static String nf = "D:\\备份\\哈哈哈";
public static void main(String[] args) {
//首先判断目录或者文件是否存在,不存在就创建
File newFile = new File(nf);
if (!newFile.exists()) {
newFile.mkdirs();
}
//要提取的文件,比如我要提取的是D:\\bilibili\\968238584
File file = new File("D:\\bilibili\\968238584");
//把视频复制到指定文件夹并根据info文件信息更改文件名
getDirName(file);
//觉得原来的原文件和目录没啥用,就把它们都删除了(如果想留下就别调用这个函数了)
deleteAllFile(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 newPath = nf + "\\" + newFileName;
File newFile=new File(newPath);
if(!newFile.exists()){
try {
newFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileInputStream in=null;
FileOutputStream out=null;
try {
in=new FileInputStream(fn);
out=new FileOutputStream(newFile);
in.skip(3);
byte[] bytes=new byte[4096];//4K
int readCount=0;
while((readCount=in.read(bytes))!=-1) {
out.write(bytes, 0, readCount);
}
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
} else {
//是文件夹就继续递归
getDirName(fn);
}
}
}
public static void deleteAllFile(File file){
File[] files=file.listFiles();
for(File f:files){
if(f.isDirectory()){
deleteAllFile(f);
}else{
f.delete();
}
}
file.delete();
}
}
标签:File,解密,bilibili,file,new,一条龙,newFile,out,String 来源: https://www.cnblogs.com/123lalalala123/p/16173663.html