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,新建一个文件并写入内容,复制一个目录及其子目录、文件到另外一个目录 ,递归删除目录下的所有文件及子目录下所有文件,读取文本文件内容,以行的形式读取.... 立即下载

相关推荐

squidpy 教程 1:在 AnnData 和 Squidpy 中导入空间数据

这些是 10x Genomics Visium 的 Space Ranger 输出提供的 keys,因此是第一个被采用的 keys。在这种情况下,我们假设空间坐标与像素具有相同的比例,因此我们将该值设置为 1。为此,我们将使用模拟数据集,并通过示例展示您应该注意的重要细节,以便利用 AnnData-Scanpy-Squidpy 生态系统的全部功能。并不是绝对必要的,但会节省您大量的输入,因为它是 Squidpy 和 Scanpy 的默认值。正如你所看到的,空间坐标被缩小了,图像被“放大”了。

🧑‍🎓 博士研究生在读 🔬 分享生物信息学、神经生物学方面的知识 💬 合作请在后台留言 2255

FileUtils工具类详解

Apache Commons包,FileUtils的用法详解

jpfice的博客 5823

高通QNN SDK实战:从PyTorch模型到Snapdragon设备的完整部署指南

本文提供了一份详尽的高通QNN SDK实战指南,手把手教你如何将PyTorch模型高效部署到Snapdragon设备。内容涵盖从环境搭建、模型转换、量化优化到多后端部署与性能评测的完整流程,旨在帮助移动AI开发者打通模型落地的“最后一公里”,充分发挥高通平台的硬件加速潜力。

pz8901234的博客 1283

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

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

Oliver9987的博客 783

目标检测数据集 第059期-基于yolo标注格式的水果李子检测数据集(含免费分享)

李子作为中国三大水果之一,种植历史超 3000 年,在市场中占据重要地位。传统李子种植、施肥、采摘依赖大量人力,存在资源浪费、产量估算不准、采摘时机难把控等问题。此前,农业领域缺乏针对 “未成熟李子” 的专用数据集,现有水果检测数据集多聚焦于成熟果实(如苹果、柑橘),且未覆盖李子种植的复杂自然场景。在使用该数据集进行学术研究时,应遵守相关的学术规范,引用该数据集的来源,尊重数据集创作者的劳动成果。,用于训练改进型模型,解决李子精准检测的核心痛点。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 772

Ubuntu22.04中通过conda快速部署PyTorch开发环境(CPU/GPU双版本实战)

本文详细介绍了在Ubuntu22.04系统中,如何利用Conda高效部署PyTorch开发环境。文章分别提供了CPU与GPU双版本的实战教程,涵盖环境创建、镜像加速、版本匹配及深度验证等关键步骤,旨在帮助开发者快速搭建稳定、兼容的深度学习环境,从而专注于模型开发。

rose2的博客 556

java File工具类 FileUtils

【代码】java File工具类 FileUtils。

qq_35004315的博客 907

家庭弱电最实用的功能,网线面板如何接线

按照规范,我国宽带入户线按B接法,即568B标准,从后面看,从左到右:1橙白,2橙,3绿白,4蓝,5蓝白,6绿,7棕白,8棕,即和水晶头的接法一致。做水晶头的时候,要注意排好线序,把8根线的头剪齐,留下大约1.8公分,插入水晶头的时候,水晶头要尾巴向下,把线插到水晶头的底端,用网线钳子夹紧。具体是:第1脚——橙白、第2脚——橙色、第3脚——绿白、第4脚——蓝色、第5脚——蓝白、第6脚——绿色、第7脚——棕白、第8脚——棕色,除了四根带颜色的线橙、绿、蓝、棕外,每一根白线上都有线标橙、绿、蓝、棕。

qq_43416206的博客 1674

Java获取文件的行数

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

superbeyone 1万+

RHCA II之路---EX442-10

这题比较耗时,可以多开2个窗口让他跑起来后先做后面的题目。

Q先生 585

基于深度学习的人脸识别考勤管理系统,采用YOLOv11和Dlib算法实现人脸识别和考勤签到,前台人脸识别和签到系统 + 后台人脸和考勤管理系统,全网独发

基于深度学习的口罩人脸识别的考勤管理系统,采用YOLOv11和Dlib算法实现人脸识别和考勤签到,前台人脸识别和签到系统 + 后台人脸和考勤管理系统,全网独发

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1825

JAVA File工具类

JAVA File工具类

yyh2868952213的博客 548

unitree-G1外接 USB 麦克风完整配置指南

首先,将type-c麦克风插入G1机器人的USB口后,记录下USB麦克风的卡号(card)和设备号(device),通常显示为 card 1: Device [USB Audio Device]

m0_47999117的博客 594

工具类的方法怎么引用_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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

解析Java中的File类

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

shichexixi的专栏 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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、付费专栏及课程。

余额充值