缘由

老师让写一个修改后缀名的作业,题目:在一个文件夹内 把所有的JPG文件按照image1.JPEG……的格式改名存储。后来他又要求了将要修改的文件复制到一个新的文件夹中,这样可以做到不影响源文件夹。所以我就做了两个版本,当然,其中很多方法都是在网上搜寻的,所以并不是很了解,只是单纯的实现了。

版本一:在当前文件夹中改名

package com.hist.two;import java.io.File;
import java.util.Scanner;/*** @author gky* @date 2023/3/15* @apiNote 在一个文件夹内 把所有的JPG文件按照image1.JPEG……的格式改名存储*/
public class ReName {/*** TODO:修改文件名的方法** @param path* @return* @author gky* @date 2023/3/15*/public static void getNew(String path) {File file = new File(path);//返回一个字符串数组,得到文件夹下的所有文件和文件夹String[] list = file.list();//如果该文件夹存在且不为空if (list != null && list.length > 0) {for (String oldName : list) {File oldFile = new File(path, oldName);//判断是文件还是文件夹if (!oldFile.isDirectory()) {//是文件则判断是不是要修改的if (oldName.contains(".jpg")) {System.out.print("修改前名称:" + oldName + "\t");String newName = oldName.substring(0, oldName.lastIndexOf(".")) + ".jpeg";System.out.println("修改后名称:" + newName);File newFile = new File(path, newName);//重命名这个路径的文件boolean flag = oldFile.renameTo(newFile);//修改成功返回true,否则返回falseSystem.out.println(flag);}} else {//是文件夹则进行迭代String newPath = path + "/" + oldName;getNew(newPath);}}}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入要修改文件夹的绝对路径:");String path = sc.nextLine();getNew(path);}
}

版本二:将一个文件夹中的所有jpg文件复制到一个新的文件夹,并将文件后缀名改为jpeg

package com.hist.two;import java.io.*;
import java.nio.channels.FileChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;/*** @author gky* @date 2023/04/12* @apiNote 将一个文件夹中的所有jpg文件复制到一个新的文件夹,并将文件后缀名改为jpeg*/
public class ReName2 {/*** 复制文件的方法** @param*/public static void copyfile(String oldPath, String newPath) throws IOException {FileChannel sourceFile = null;FileChannel copiedFile = null;File file = new File(oldPath);//返回一个字符串数组,得到文件夹下的所有文件和文件夹String[] list = file.list();//如果该文件夹存在且不为空if (list != null) {for (String childName : list) {File oldFile = new File(oldPath, childName);//判断是文件还是文件夹if (!oldFile.isDirectory()) {//是文件则判断是不是要复制的的if (childName.contains(".jpg")) {try {sourceFile = new FileInputStream(oldFile).getChannel();copiedFile = new FileOutputStream(newPath + "/" + childName.substring(0, childName.lastIndexOf(".")) + ".jpeg").getChannel();/*** 参数一:原通道 参数二:文件中开始传输的位置 参数三:要传输的最大字节数*/copiedFile.transferFrom(sourceFile, 0, sourceFile.size());} catch (IOException e) {e.printStackTrace();} finally {sourceFile.close();copiedFile.close();}}} else {//是文件夹则进行迭代String nextPath = oldPath + "/" + childName;copyfile(nextPath, newPath);}}}}public static void main(String[] args) throws IOException {Scanner sc = new Scanner(System.in);System.out.println("请输入要修改文件夹的绝对路径:");String oldPath = sc.nextLine();System.out.println("请输入要创建新文件夹的目录:");//用于储存jpeg文件String newPathStr = sc.nextLine();/*** Path:可用于在文件系统中定位文件的对象。它通常表示一个系统相关的文件路径。* createDirectories:通过首先创建所有不存在的父目录来创建目录。与createDirectory方法不同,如果目录已经存在而无法创建,则不会抛出异常。* Path.get():将路径字符串或连接形成路径字符串的字符串序列转换为path。*/Path newPath = Files.createDirectories(Paths.get(newPathStr));String pathName = newPath.toString();System.out.println("新文件夹创建成功,名称为:" + pathName);//将旧文件夹中的所有jpg文件复制到一个新文件夹copyfile(oldPath, pathName);System.out.println("文件名修改成功!");}
}

总结

其中版本二创建新文件夹用到了Path,可以返回路径。复制文件到新文件夹用到了FileChannel,相比于传统的输入输出流,传输速度更快,稳定性更高。并且FileOutputStream()可以间接的在复制文件的时候就把文件名改了,省去了版本一改文件名的步骤。变量命名有点乱,见谅。(idea提示我 list.length > 0是多余的,有大佬能解释一下吗?)。

Java代码修改文件后缀名(迭代)相关推荐

  1. Java代码修改文件后缀名

    在学习了JavaEE,要把页面原型后缀名".html"修改为".jsp".我是一个不喜欢做重复动作的人.就想着用代码实现.Java学的还不是很熟练,折腾了半个多 ...

  2. java例程练习(批量修改文件后缀名)

    /*** 文件后缀名修改器* 说明:UI部分* @author Yours风之恋* * 创建时间:2012-8-8**/ public class UserInterface {public stat ...

  3. 修改文件后缀 java_java批量修改文件后缀名方法总结|chu

    突然需要改一堆文件的后缀名,所以想编程解决,话不多说直接上代码 java import java.io.File; import java.util.Scanner; public class Fil ...

  4. linux sed给空文件首行插入_linux下批量修改文件后缀名以及合并多行

    写在前面 感谢乔兄送测的公司,让我终于所有营业 part1讲下怎么解决小问题 part2分享谈判过程 part3mark张兄的奶茶 PART1 linux下批量修改文件后缀名以及合并多行 近期师兄在做 ...

  5. C++批量修改文件后缀名(提供多种方法)

    C++批量修改文件后缀名的Qt程序 方法一: #include "stdafx.h"#include <stdio.h> #include <fstream> ...

  6. (BAT批处理)如何穿透多个文件夹批量修改文件后缀名?

    如何穿透多个文件夹批量修改文件后缀名?也就是不打开文件夹,直接修改.re批处理命令不知道怎么穿透文件夹. 不清楚你的实际文件/情况,仅以问题中的说明及猜测为据:以下代码复制粘贴到记事本,另存为xx.b ...

  7. bat修改win8计算机名,Win7/win8系统下利用批处理文件批量修改文件后缀名的方法...

    大家都知道,文件后缀名也叫文件扩展名,是用来表示某种文件格式所采用的机制,不过有时候有需要想要修改文件的后缀名类型,一般都是通过右键修改重命名来完成的,但是如果需要修改多个文件后缀名的话一个个修改太麻 ...

  8. 手机php文件怎么改后辍,php修改文件后缀名的方法

    php修改文件后缀名的方法 发布时间:2020-09-04 10:10:15 来源:亿速云 阅读:82 作者:小新 这篇文章主要介绍了php修改文件后缀名的方法,具有一定借鉴价值,需要的朋友可以参考下 ...

  9. 玩点不一样的,如何使用MATLAB实现批量修改文件后缀名,文件名,批量复制文件

    1.  自动批量修改文件后缀名,有时非常有用. 对于文件名没有要求,不用是序列文件名.比如需要将abaqus的inp文件修改成txt文件,便于使用 textscan和 textread等函数操作. c ...

最新文章

  1. linux系统用户属组,关于 Linux系统用户、组和权限管理
  2. nginx 一个请求发给多台机器_Nginx系列二:负载均衡与反向代理
  3. Mybatis之Oracle增删查改示例--转
  4. opentld matlab视频,计算机视觉中的相关算法的源代码
  5. .NET轻量级配置中心AgileConfig
  6. 高性能浏览器网络(High Performance Browser Networking) 第二章
  7. cesium js 路径_[CesiumJS]Cesium入门3 – Cesium目录框架结构
  8. Http请求返回结果报UnsupportedCharsetException
  9. memmove、memcpy和memccpy简介
  10. 功能测试项目——酒店管理系统
  11. linux安卓管理软件,基于Android的文件管理系统源代码
  12. plist文件详细说明
  13. 域名过期后还能续费域名吗?
  14. 为何晶振并联一个1MΩ电阻?晶振低温不起振如何解决?
  15. 泰芯半导体MCU开发工具仿真器
  16. Python调用API接口,实现人脸识别
  17. 五、HTML5单页框架View.js介绍 - View.js的比较优势
  18. 前端学习笔记(四)网站SEO优化之TDK三大标签
  19. 金和获微软ISV认证 提升产品技术优势
  20. Mac上稳定的视频播放器:Movist Pro

热门文章

  1. Flutter - desktop 无框窗口、appBar样式修改
  2. 基于Vue+Element UI+Node+MongoDB的医院门诊预约挂号系统
  3. 苹果iPhone 5 4S发布会现场实录
  4. pagerank算法总结
  5. 计算机桌面快捷标删了,桌面快捷方式删不掉怎么办【图解】
  6. 5G与WiFi6相爱相杀的关系
  7. 三星i9300刷机及Root
  8. 女生职高学计算机应用有用吗,女生学计算机专业好吗_职高计算机专业Word范例教学三例...
  9. 便携式linux终端,5款优秀的Linux便携式应用
  10. layui文件树Dtree的使用