java File实用工具

61、Java实用工具与输入输出系统详解 本文详细介绍了Java中的实用工具包java.util及其常用类和接口,同时深入解析了Java输入输出系统(java.io),包括流的概念、File类的使用、目录操作、相关接口与异常处理机制。此外,还探讨了性能优化策略及不同场景下的输入输出应用,并展望了Java输入输出系统的未来发展趋势。 阅读详情

File实用工具(一)
新人第一次写,从工具类开始
1、copy文件夹下所有文件
2、按文件名称或后缀选择性copy文件夹下的不同文件
3、文件夹下同类型文件合并
4、文件分割

package util;

import java.io.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.UUID;

/**
 * Author:varCode
 * Date:2019-02-15 10:29
 * Description:<描述>
 */
public class FileUtil {
    /**
     * 拷贝文件或文件夹
     * @param fromDir 源文件路径
     * @param toDir   拷贝至的路径
     * @param filter  选择性拷贝(后缀名、文件名)
     */
    public static void copy(String fromDir, String toDir, String filter) {

        if (new File(fromDir).isDirectory()) {
            List<File> files = getFiles(fromDir);
            for (File file : files) {
                if (null != filter && !(file.getName().contains(filter))) {
                    continue;
                }
                try {
                    FileInputStream fis = new FileInputStream(file);
                    File copyFile = new File((file.getAbsolutePath()).replace(fromDir, toDir));
                    if(!copyFile.getParentFile().exists()){
                        copyFile.getParentFile().mkdirs();
                    }
                    FileOutputStream fos = new FileOutputStream(copyFile);
                    byte[] b = new byte[fis.available()];
                    fis.read(b);
                    fos.write(b);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } else {
            try {
                FileInputStream fis = new FileInputStream(fromDir);
                FileOutputStream fos = new FileOutputStream(toDir);
                byte[] b = new byte[fis.available()];
                fis.read(b);
                fos.write(b);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 拷贝文件或文件夹
     * @param fromDir
     * @param toDir
     */
    public static void copy(String fromDir, String toDir) {
        copy(fromDir, toDir, null);
    }

    /**
     * 文件夹下相同的文件类型整合成一个文件(文本、字符类)
     * @param path     文件夹路径
     * @param location 合并文件名存放路径
     */
    public static void fileUnion(String path, String location) {
        List<File> files = getFiles(path);
        HashSet<String> types = new HashSet<>();
        for (File file : files) {
            types.add(suffix(file));
        }
        try {
            for (String type : types) {
                File newFile = new File(location);
                if(!newFile.exists()){
                    newFile.mkdirs();
                }
                FileOutputStream fos = new FileOutputStream(new File(location + File.separator + UUID.randomUUID() + type));
                for (File file : files) {
                    if (file.getName().endsWith(type)) {
                        FileInputStream fis = new FileInputStream(file);
                        byte[] b = new byte[fis.available()];
                        fis.read(b);
                        fos.write(b);
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 文件按大小分割(文本、字符类)
     * @param path 源文件路径
     * @param size 分割大小(M)
     */
    public static void splitFile(String path, double size){
        File file = new File(path);
        try {
            FileInputStream fis = new FileInputStream(file);
            double total = (double)(fis.available()) / (1024 * 1024);
            int num = total % size == 0 ? (int) (total / size) : (int) (total / size) + 1;
            for (int i = 0; i < num; i++) {
                File splitFile = new File(file.getAbsolutePath().replace(suffix(file),"") + "(" + (i+1) + ")" + suffix(file));
                FileOutputStream fos = new FileOutputStream(splitFile);
                if(i == num-1){
                    byte[] b = new byte[fis.available()];
                    fis.read(b);
                    fos.write(b);
                }else{
                    byte[] b = new byte[(int)(size*1024*1024)];
                    fis.read(b);
                    fos.write(b);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取目录下所有的文件
     * @param path 目录
     * @return 所有文件
     */
    public static List<File> getFiles(String path) {
        ArrayList<File> fileList = new ArrayList<>();
        File file = new File(path);
        File[] files = file.listFiles();
        for (File childFile : files) {
            if (childFile.isFile()) {
                fileList.add(childFile);
            } else {
                fileList.addAll(getFiles(childFile.getAbsolutePath()));
            }
        }
        return fileList;
    }

    /**
     * 获取文件后缀(.png\.txt)
     * @param file
     * @return
     */
    public static String suffix(File file){
        return file.getName().substring(file.getName().lastIndexOf("."));
    }

    /**
     * 关闭流资源
     */
    public static void closeIO(Object... objs) throws IOException {
        for (Object obj :
                objs) {
            if (obj instanceof InputStream) {
                ((InputStream) obj).close();
            } else if (obj instanceof OutputStream) {
                ((OutputStream) obj).close();
            } else throw new IOException();
        }
    }
}

测试代码

public class Test {
    public static void main(String[] args){
        //测试 copy
        //FileUtil.copy("C:\\Users\\28\\Desktop\\笔记","C:\\Users\\28\\Desktop\\note");
        //测试 copy filter
        //FileUtil.copy("C:\\Users\\28\\Desktop\\笔记","C:\\Users\\28\\Desktop\\note","pdf");
        //测试 fileUnion
        //FileUtil.fileUnion("C:\\Users\\28\\Desktop\\dir","C:\\Users\\28\\Desktop\\dir");
        //测试 splitFile
        //FileUtil.splitFile("C:\\Users\\28\\Desktop\\Java面试问题集.pdf",1.0);
    }
}
java File文件处理工具类 从输入流中读取string,新建一个文件并写入内容,复制一个目录及其子目录、文件到另外一个目录 ,递归删除目录下的所有文件及子目录下所有文件,读取文本文件内容,以行的形式读取.... 立即下载

相关推荐

时间序列聚类在股票市场分析中的实践与优化

时间序列聚类是一种面向动态行为建模的无监督学习方法,其核心在于通过语义感知的距离度量(如DTW)捕捉价格形态的相位弹性与结构相似性,而非依赖静态数值或标签驱动。相比K-Means等传统算法,它能有效缓解金融时序中普遍存在的噪声敏感、对齐失效与形态失真问题,从而提升聚类结果的市场可解释性与策略鲁棒性。该技术已广泛应用于市场状态识别、行业行为分群、异常交易监测等场景,并成为构建可验证量化分析框架的关键预处理层。本文聚焦A股真实行情数据,详解从原始OHLCV到可聚类时间序列的完整链路,涵盖DTW距离计算、层次聚类

weixin_34220179的博客 828

FileUtils工具类详解

Apache Commons包,FileUtils的用法详解

jpfice的博客 5823

Uniapp+Vue3+Monorepo:如何优化你的前端开发流程(附完整配置代码)

本文详细介绍了如何利用Uniapp+Vue3+Monorepo技术栈优化前端开发流程,提升代码可维护性和团队协作效率。通过Monorepo架构实现依赖管理智能化、代码复用最大化和构建流程统一化,结合完整配置代码和实战指南,帮助开发者快速构建高性能跨端应用。

weixin_29011993的博客 453

Java中文件操作的利器——File类使用详解

在Java中,File类位于java.io包下,用于表示文件和目录。File类不仅能够进行文件的创建、删除、修改等操作,还能提供文件的路径、大小、是否存在等信息。需要注意的是,File类本身并不提供直接的读写文件内容的功能,读写操作需要使用等类来完成。File类是Java中进行文件和目录操作的重要工具。它提供了对文件的基本操作,如创建、删除、重命名、获取文件信息等功能,但需要注意的是,File类本身并不支持文件内容的读取和写入。要进行内容的操作,仍然需要使用等输入输出流类。对于开发者来说,File。

Oliver9987的博客 783

ESP32连接PDM麦克风操作指南:新手入门必看

手把手教你如何将ESP32与PDM麦克风连接,采集音频数据并用于音频分类应用。内容涵盖硬件接线、代码配置及实际调试技巧,适合初学者快速上手esp32在声音识别场景中的使用。

weixin_42590539的博客 1329

如何查看在电脑里登陆过的微信帐号的聊天记录

打开微信电脑版,点击左下角 "≡" 菜单 → 选择 "设置"进入 "账号与存储"(旧版为" 文件管理 ")选项卡在 "存储位置"一栏查看当前实际保存路径,可点击" 打开文件夹 " 直接访问查看电脑里登录过的微信账号聊天记录,首选官方客户端直接登录查看,操作简单且安全;若账号已退出,可通过备份恢复功能处理;仅需查看媒体文件时,可定位到FileStorage 文件夹直接访问。无论哪种方式,都需遵守隐私保护原则,并注意聊天记录的加密特性限制。

捷利迅分享的博客 4532

java File工具类 FileUtils

【代码】java File工具类 FileUtils。

qq_35004315的博客 907

手把手教你用Arduino Uno控制meArm机械臂(附完整代码+避坑指南)

本文提供了一份详尽的meArm机械臂控制指南,涵盖从Arduino Uno硬件连接到Servo库编程的完整流程。重点讲解了如何通过独立供电、软件限位和平滑运动函数实现稳定控制,并设计了串口指令协议与高级功能,帮助创客有效规避舵机抖动、电源不足等常见问题,让机械臂运行更流畅可靠。

gpt4scribbler的博客 540

Java获取文件的行数

Java获取文件的行数 原文地址 利用LineNumberReader public static int getFileLineNum(String filePath) { try (LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(filePath))){ lineNumb...

superbeyone 1万+

C#实战:5分钟搞定Modbus RTU通讯(基于NModbus4库)

本文详细介绍了如何使用C#和NModbus4库快速实现Modbus RTU通讯,包括环境配置、核心功能实现、性能优化及常见问题排查。通过代码示例和实用技巧,帮助开发者高效完成工业自动化设备的数据采集与控制任务。

weixin_30689307的博客 467

Android - 蓝牙开发

文章目录科普SIG类型制式编程Classic BluetoothBluetooth Low Energy蓝牙的UUID是什么?有什么用? 科普 https://zh.wikipedia.org/wiki/%E8%97%8D%E7%89%99 蓝牙(英语:Bluetooth),一种无线通讯技术标准,用来让固定与移动设备,在短距离间交换资料,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由 2.4 至 2.485 GHz 的 ISM(工业、科学、医疗)频段来进行通信。1994 年由电信商

qq_43323826的博客 1万+

JAVA File工具类

JAVA File工具类

yyh2868952213的博客 548

YOLOv8交通管理 详细解释及代码完整示例

YOLOv8在交通管理中的应用及代码实现 摘要:本文详细介绍了YOLOv8在交通管理领域的应用场景,包括车辆检测、违规行为识别和行人安全预警等。文章提供了完整的Python代码示例,展示了如何使用YOLOv8进行交通对象检测和车辆计数统计。代码包含模型加载、对象检测、结果可视化等功能模块,并给出了性能优化和功能扩展建议。该实现基于Ultralytics框架,支持多种YOLOv8模型选择,可根据实际需求调整模型大小和检测参数。

u010117029的博客 153

工具类的方法怎么引用_Java实用工具类:File工具类方法学习,可创建目录及文件...

开发项目过程中,会用到很多工具类,今天分享一个Java中File操作工具类,可以帮你节约时间,提高开发效率。File工具类public class CreateFileUtil { public static boolean createFile(String destFileName) { File file = new File(destFileName); if(file.exists(...

weixin_36132740的博客 286

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ad file type not recognised_Java实用工具类:File工具类方法学习,可创建目录及文件...

开发项目过程中,会用到很多工具类,今天分享一个Java中File操作工具类,可以帮你节约时间,提高开发效率。File工具类public class CreateFileUtil { public static boolean createFile(String destFileName) { File file = new File(destFileName); if(file.exists(...

weixin_39931362的博客 273

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

解析Java中的File类

File(文件类)        尽管java.io定义的大多数类是实行流式操作的,File类不是。它直接处理文件和文件系统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因为安全原

shichexixi的专栏 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

sqlite工具类 java_Java实用工具类:File工具类方法学习,可创建目录及文件

开发项目过程中,会用到很多工具类,今天分享一个Java中File操作工具类,可以帮你节约时间,提高开发效率。File工具类public class CreateFileUtil { public static boolean createFile(String destFileName) { File file = new File(destFileName); if(file.exists(...

weixin_39610085的博客 100

File类--Java I/O

1 基本知识 File类表示的是文件或者文件目录路径。 常用的api可以查看api文档 Java API中文文档 同时,博友的总结,自己就不总结了,要学会拿来嘛(偷笑) java中File类的常用所有方法及其应用 2 Java编程思想上的几个例子 学习完API在看看几个例子,File类基本就已经掌握啦。这里直接把Java编程思想上的几个例子粘过来看。 例1 目录列表器 package io;//:...

sixabs的博客 197

java中的File类

File类   java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类。它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑。对文件的真正操作,还得需要I/O流的实现。 1.目录列表   如果我们想查看某个目录下有那些文件和目录,我们可以使用File中提供的list方式来查看,这很像linux下的ls命令。   查看E:/ht...

被罚站的树 54

Java I/O系统(1):File类

对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务。现有的大量不同方案已经说明了这一点。挑战似乎来自于要涵盖所有的可能性。不仅存在各种I/O源端和想要与之通信的接收端(文件、控制台、网络链接等),而且还需要以多种不同的方式与它们进行通信(顺序、随机存取、缓冲、二进制、按字符、按行、按字等)。java类库的设计者通过创建大量的类来解决这个难题。一开始,可能会对java I/O系统提供了如此多的类感到不知所措(具有讽刺意味的是,java I/O设计的初衷是为了避免过多的类)。

游王子og的博客 312

MultipartFile 和 File 类型互转

引入jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <a

expect521的博客 4234

Java File类及其应用

File类 1、文件类File是用来获取文件的属性以及删除、重命名文件的; 2、构建一个File实例时,不会再机器上创建一个文件,File实例是不可改变的,即File表示的抽象路径名将永远不变; 3、绝对文件名:由文件名和他的完整路径,以及驱动字母组成的,如c:\book\Welcome.java, 其中 c:\book为目录路径; 4、windows中目录的分隔符是 \,但在j

Al_assad的博客 691

java将MultipartFile转file工具类

#java将MultipartFile转file工具类 提示:这里可以添加学习目标 例如:一周掌握 Java 入门知识 package com.demo.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.commons.fileupload.FileItem; import org

qq_35524008的博客 618

Java File 类

File(文件类)         尽管java.io定义的大多数类是实行流式操作的,File类不是。它直接处理文件和文件系统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因

精彩人生从此刻开始 447

解析java文件中的方法_解析Java中的File类

File(文件类)尽管java.io定义的大多数类是实行流式操作的,File类不是。它直接处理文件和文件系统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因为安全原因而受到严格限制,文件仍...

weixin_28950403的博客 434
下一篇: springmvc全注解配置
varCode
博客等级 码龄9年 11粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值