【java】【File】用File相关类写一个小工具,完成从指定目录下抽取指定文件并复制到新路径下完成重命名的功能
今日份代码:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List; public class FileTest { public static void main(String[] args) throws IOException { //输出文件目录
String outputPath = "D:\\userOwner\\bili\\output\\"; //1.指定一级路径
String path = "D:\\userOwner\\bili\\input";
File oneLevelFile = new File(path);
System.out.println(String.format("一级路径:%s, 是否存在:%s", oneLevelFile.getAbsolutePath(),oneLevelFile.exists())); //2.获取二级路径
File[] twoLvelFiles = oneLevelFile.listFiles();
System.out.println(String.format("二级目录总数量:%s", twoLvelFiles.length)); Integer num = 0;
for (File twoLvelFile : twoLvelFiles) {
System.out.println(String.format("二级路径名称:%s", twoLvelFile.getName())); //3.进入三级路径
File[] threeLevelFiles = twoLvelFile.listFiles();
System.out.println(String.format("三级目录总数量是否为1:%s,三级路径名称:%s",
threeLevelFiles.length == 1, threeLevelFiles[0].getName()));
File threeLevelFile = threeLevelFiles[0]; //4.进入四级路径
File[] fourLevelFiles = threeLevelFile.listFiles();
System.out.println(String.format("四级目录总数量是否为3:%s,是否存在entry.json文件:%s,是否存在16文件夹:%s",
fourLevelFiles.length == 3, fourLevelFiles[2].getName().equals("entry.json"), fourLevelFiles[0].getName().equals("16"))); //5.从entry.json文件获取对应title
String thisFileTitle = "";
File entryJsonFile = fourLevelFiles[2];
List<String> entryJsonStrList = Files.readAllLines(Paths.get(entryJsonFile.getAbsolutePath()), StandardCharsets.UTF_8);
JSONObject jsonObject = JSON.parseObject(entryJsonStrList.get(0));
thisFileTitle = jsonObject.getString("title");
System.out.println(String.format("entry.json文件中获取title:%s", thisFileTitle)); //6.从16文件夹中进入五级路径
File[] fiveLevelFiles = fourLevelFiles[0].listFiles();
System.out.println(String.format("五级目录总数量是否为3:%s,是否存在audio.m4s文件:%s",
fiveLevelFiles.length == 3, fiveLevelFiles[0].getName().equals("audio.m4s"))); //7.拷贝audio.m4s文件到新目录下并完成重命名动作
File dest = new File(outputPath+thisFileTitle+".m4s");
copyFileUsingFileStreams(fiveLevelFiles[0], dest);
System.out.println(String.format("拷贝audio.m4s文件到新目录下并完成重命名动作,全新文件地址:%s",
dest.getAbsolutePath())); num++;
} System.out.println(String.format("实际生成目标文件数量:%s,是否和预期数量一致:%s",
num, num.equals(twoLvelFiles.length)));
} private static void copyFileUsingFileStreams(File source, File dest)
throws IOException {
InputStream input = null;
OutputStream output = null;
try {
input = new FileInputStream(source);
output = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead);
}
} finally {
input.close();
output.close();
}
}
}
控制台记录过程日志:
一级路径:D:\userOwner\bili\input, 是否存在:true
二级目录总数量:1
二级路径名称:48535790
三级目录总数量是否为1:true,三级路径名称:c_84996945
四级目录总数量是否为3:true,是否存在entry.json文件:true,是否存在16文件夹:true
entry.json文件中获取title:【官方MV】萌托Thomas Rhett新单《Look What God Gave Her》首播
五级目录总数量是否为3:true,是否存在audio.m4s文件:true
拷贝audio.m4s文件到新目录下并完成重命名动作,全新文件地址:D:\userOwner\bili\output\【官方MV】萌托Thomas Rhett新单《Look What God Gave Her》首播.m4s
实际生成目标文件数量:1,是否和预期数量一致:true
【java】【File】用File相关类写一个小工具,完成从指定目录下抽取指定文件并复制到新路径下完成重命名的功能的更多相关文章
- 今天突发奇想写了一个小工具,CSDN文章目录生成器
Why 文章被遗忘 文章检索不好用 方便总结个人知识 What 根据文章分类生成文章目录 莫逸风文章目录 项目地址 gitee(地址)
- java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中
/** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. * * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...
- java 写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中
package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...
- Python之小测试:用正则表达式写一个小爬虫用于保存贴吧里的所有图片
很简单的两步: 1.获取网页源代码 2.利用正则表达式提取出图片地址 3.下载 #!/usr/bin/python #coding=utf8 import re # 正则表达式 import urll ...
- 【开源一个小工具】一键将网页内容推送到Kindle
最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...
- Windows PE 第一章 熟悉OD(顺便破解一个小工具)
熟悉OD(顺便破解一个小工具) 上一节了解了OD的简单使用,这次就练习下,目标是破解一款小软件(入门练手用的,没有壳什么的). 首先我们来看一下这个小软件: 我们的目的是输入任何字符串都可以成功注册, ...
- 提高Scrum站会效率的一个小工具
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:提高Scrum站会效率的一个小工具.
- Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹
package cuiyuee; import java.io.File; import java.util.ArrayList; import java.util.List; public clas ...
- 死磕 java同步系列之自己动手写一个锁Lock
问题 (1)自己动手写一个锁需要哪些知识? (2)自己动手写一个锁到底有多简单? (3)自己能不能写出来一个完美的锁? 简介 本篇文章的目标一是自己动手写一个锁,这个锁的功能很简单,能进行正常的加锁. ...
- 死磕 java线程系列之自己动手写一个线程池
欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. (手机横屏看源码更方便) 问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写 ...
随机推荐
- mapboxgl加载tiff
缘起 近期在项目中遇到这么一个需求,需要在地图上展示一组格网数据,格网大小为2m*2m,地图api用的mapboxgl.起初拿到这个需要感觉很easy,在地图上添加一个fill图层就好啦.把格网面数据 ...
- 干货|什么是特性团队/功能团队(FeatureTeam)
最近一直在思考如何做团队组织能力建设和如何进行决策.执行产品研发策略.因为自己一直在研发效能领域,所以来谈谈什么是特性团队(FeatureTeam), 怎么创建特性团队以及在日常工作中如何结合 Scr ...
- day48-JDBC和连接池04
JDBC和连接池04 10.数据库连接池 10.1传统连接弊端分析 传统获取Connection问题分析 传统的 JDBC 数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都 ...
- instanceof的使用和向下转型
x instanceof A:检验x是否为类A的对象,返回值为boolean型 使用情境:为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instance ...
- React + Springboot + Quartz,从0实现Excel报表自动化
一.项目背景 企业日常工作中需要制作大量的报表,比如商品的销量.销售额.库存详情.员工打卡信息.保险报销.办公用品采购.差旅报销.项目进度等等,都需要制作统计图表以更直观地查阅.但是报表的制作往往需要 ...
- Vue中router路由的使用、router-link的使用(在项目中的实际运用方式)
文章目录 1.先看router中的index.js文件 2.router-link的使用 3.实现的效果 前提:router已经安装 1.先看router中的index.js文件 import Vue ...
- python制作一个小型翻译软件
from urllib import parse,request import requests,re,execjs,json,time 英语查词翻译 class Tencent(): def ini ...
- C#--String.Substring方法
第一种:String.SubString(int start,int length) 截取指定长度的字符串 这里有两个int型的参数 string表示字符串截取的起始位置,length表截取的 ...
- 脚本之一键部署nexus
NEXUS_URL="https://download.sonatype.com/nexus/3/nexus-3.39.0-01-unix.tar.gz" #NEXUS_URL=& ...
- C#接口设计
基本架构 model 实体 说得通俗一些,model中主要是定义前端传过来的变量以及其类型,或者是需要操作的数据库中的某些字段值.举个例子: namespace Test.Models.Book { ...