【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)自己动手写 ...
随机推荐
- k8s日志架构和基本日志
如果一个容器崩溃了.一个Pod被驱逐了.或者一个节点停机了,您通常仍然需要访问您应用程序的日志.为此,您需要一个生命周期与节点.Pod.容器相对独立的存储空间来存储应用程序日志和系统日志. 此时,我们 ...
- Grafana配置Alert监控告警
1.添加告警途径 这里以slack为例 测试是否可用 在slack上收到告警通知了 安装插件 # grafana-cli plugins install grafana-image-renderer ...
- 5N的多次方
N=eval(input(" 请输入一个数:")) for i in range (5): print(pow(N,i))
- 支付宝沙箱服务 (结合springboot实现,这里对接的是easy版本,工具用的是IDEA,WebStrom)
一:打开支付宝开发平台,登录,然后点击控制台 https://open.alipay.com/ 二:滚动到底部,选着沙箱服务 三:获取到对接要用的appId和公钥私钥 四:打开IDEA导入所需的xml ...
- 【算法训练营day1】LeetCode704. 二分查找 LeetCode27. 移除元素
[算法训练营day1]LeetCode704. 二分查找 LeetCode27. 移除元素 LeetCode704. 二分查找 题目链接:704. 二分查找 初次尝试 看到题目标题是二分查找,所以尝试 ...
- Linux-->开关机+用户管理指令
关机与重启指令 shutdown关机 语法: shutdown -h 关机时间 now 立刻 1 1分种后 shutdown重启 语法: shutdown -r 重启时间 now 立刻 1 1分钟后 ...
- day47-JDBC和连接池03
JDBC和连接池03 8.事务 8.1事务介绍 基本介绍 JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而 ...
- resultMap处理字段和属性的映射关系
1.resultMap处理字段和属性的映射关系 若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射 <!-- resultMap:设置自定义映射 属性: id:表示自定 ...
- 用copyof来复制数组
public static void main(String[] args) { //Arrays.copyOf将数组复制到另一个数组,截断.扩容 String[] a={"1", ...
- 在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
文章目录 1.实现的效果 2.前端代码 3.后端controller代码 4.servie层代码 5.serviceImpl层代码 6.mapper层代码 7.xml中的sql语句 8.遇到的问题 8 ...