import lombok.extern.slf4j.Slf4j;
import me.xueyao.RandomUtils;
import me.xueyao.validate.Validators;
import me.xueyao.date.DateTools;
import java.io.*;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 文件的基本操作:创建,删除等
*
* @author zkx
* @date 2019-10-10
*/
@Slf4j
public class FileUtil {
private static final String FOLDER_SEPARATOR = "/";
private static final char EXTENSION_SEPARATOR = '.';
/**
* 创建文件夹
*
* @param folderName 文件路径名称
*/
public static boolean creatFolder(String folderName) {
File folder = new File(folderName);
boolean result = false;
if (!folder.exists()) {
//创建多级文件夹
result = folder.mkdirs();
if (result) {
//log.info("创建文件夹成功,folderName:{}", folderName);
} else {
//log.warn("创建文件夹失败,folderName:{}", folderName);
}
} else {
result = true;
//log.error("文件夹已存在,folderName:{}", folderName);
}
return result;
}
/**
* 创建文件
*
* @param folderName 文件路径
* @param fileName 文件名称
*/
public static boolean createFile(String folderName, String fileName) throws IOException {
boolean result = false;
if (creatFolder(folderName)) {
File file = new File(folderName + File.separator + fileName);
//文件不存在
if (!file.exists()) {
try {
result = file.createNewFile();
//log.info("创建文件成功,filePath:{}", file.getAbsolutePath());
} catch (IOException e) {
//log.error("创建文件失败 , filePath : {}", file.getAbsolutePath());
}
} else {
//文件存在
//log.warn("文件已经存在 , filePath:{}", file.getAbsolutePath());
}
} else {
//do nothing
}
return result;
}
/**
* 文件重命名
*
* @param folderName 文件路径
* @param oldFileName 文件旧名称
* @param newFileName 文件新名称
*/
public static boolean renameFile(String folderName, String oldFileName, String newFileName) {
boolean result = false;
File file = new File(folderName + File.separator + oldFileName);
// 文件存在
if (file.exists()) {
File newFile = new File(folderName + File.separator + newFileName);
result = file.renameTo(newFile);
//log.info("文件重命名成功,filePath:{}", file.getAbsolutePath());
} else {
//文件不存在
//log.error("文件不存在,无法重命名,filePath:{}", file.getAbsolutePath());
}
return result;
}
/**
* 删除文件
*
* @param folderName 文件路径
* @param fileName 文件名称
*/
public static boolean deleteFile(String folderName, String fileName) {
boolean result = false;
File file = new File(folderName + File.separator + fileName);
// 文件存在
if (file.exists()) {
result = file.delete();
//log.info("文件删除成功,filePath:{}", file.getAbsolutePath());
} else { //文件不存在
//log.warn("文件不存在,无法删除,filePath:{}", file.getAbsolutePath());
}
return result;
}
/**
* 根据文件名目录打散
*
* @param name 文件名
* @return
*/
public static String getDir(String name) {
if (name != null) {
int code = name.hashCode();
return "/" + (code & 15) + "/" + (code >>> 4 & 15);
}
return null;
}
/**
* 递归取得某个目录下所有的文件
*
* @param path 目录
* @return 文件List
*/
public static List<File> getNestedFiles(String path) {
File directory = new File(path);
if (!directory.exists() || !directory.isDirectory()) {
throw new IllegalArgumentException("Nonexistent directory[" + path + "]");
}
return new Recursiver().getFileList(directory);
}
private static class Recursiver {
private static List<File> files = new ArrayList<>();
public List<File> getFileList(File file) {
File[] children = file.listFiles();
for (int i = 0; i < children.length; i++) {
if (children[i].isDirectory()) {
new Recursiver().getFileList(children[i]);
} else {
files.add(children[i]);
}
}
return files;
}
}
/**
* 打印目录结构
*
* @param file 文件对象
* @param level 目录的层次
*/
public static void printDir(File file, int level) {
for (int i = 0; i < level; i++) {
System.out.print("\t");
}
System.out.println(file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
printDir(f, level + 1);
}
}
}
/**
* 获取文件类型及其个数
*
* @param f 文件对象
* @param map map集合,存扩展名及个数
*/
public static void getFileType(File f, Map<String, Integer> map) {
if (f.isDirectory()) {
File[] files = f.listFiles();
for (File file : files) {
getFileType(file, map);
}
} else {
// 获得文件名
String fileName = f.getName();
// 获得文件扩展名
String key = fileName.substring(fileName.lastIndexOf(".") + 1);
// 判断map是否包含key
if (map.containsKey(key)) {
map.put(key, map.get(key) + 1);
} else {
map.put(key, 1);
}
}
}
/**
* 删除某个文件下的所有文件(包括子文件夹)
*
* @param dir 文件对象
*/
public static void delete(File dir) {
// 获取所有文件
File[] files = dir.listFiles();
// 遍历子目录,删除子目录
for (File file : files) {
if (file.isFile()) {
boolean success = file.delete();
// 判断是否删除成功,主要用于测试自己写的代码
if (success) {
System.out.println(file + "删除成功");
} else {
System.out.println(file + "正在使用,删除失败");
}
} else {
// 如果是文件夹递归删除
delete(file);
}
}
// 来到这里说明,该文件夹为空了.
boolean success = dir.delete();
// 判断是否删除成功,主要用于测试自己写的代码
if (success) {
System.out.println(dir + "删除成功");
} else {
System.out.println(dir + "正在使用,删除失败");
}
}
/**
* 过滤器筛选将指定文件夹下的小于size的小文件获取并打印
*
* @param f 文件对象
* @param size 要过滤文件的大小(单位:KB)
*/
public static void filterFile(File f, final Integer size) {
if (f.isFile()) {
System.out.println(f + "不是文件夹");
return;
}
if (!f.exists()) {
return;
}
// 获得文件数组
File[] files = f.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
// 判断是否是文件夹,如果是则返回true
if (pathname.isDirectory()) {
return true;
}
// 判断是否是隐藏文件
if (pathname.isHidden()) {
return false;
}
// 获得文件大小
long length = pathname.length();
if (length / 1024 < size) {
return true;
}
return false;
}
});
// 遍历数组
for (File file : files) {
if (file.isDirectory()) {
filterFile(file, size);
continue;
}
System.out.println(file);
}
}
/**
* 获得文件夹的大小
*
* @param dir 文件对象
* @return 文件夹的大小(单位 : 字节)
*/
public static long folderSize(File dir) {
long length = 0;
// 获得文件数组
File[] files = dir.listFiles();
// 遍历数组
for (File file : files) {
// 判断是否是文件夹
if (file.isDirectory()) {
length += folderSize(file);
} else {
length += file.length();
}
}
return length;
}
/**
* 获取文件的MD5
*
* @param file 文件
* @return
* @author : chenssy
* @date : 2016年5月23日 下午12:50:38
*/
public static String getFileMD5(File file) {
if (!file.exists() || !file.isFile()) {
return null;
}
MessageDigest digest = null;
FileInputStream in = null;
byte[] buffer = new byte[1024];
int len;
try {
digest = MessageDigest.getInstance("MD5");
in = new FileInputStream(file);
while ((len = in.read(buffer, 0, 1024)) != -1) {
digest.update(buffer, 0, len);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
return null;
}
BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);
}
/**
* 获取文件的后缀
* @param file 文件
* @deprecated
* @date : 2016年5月23日 下午12:51:59
*/
public static String getFileSuffix(String file) {
if (file == null) {
return null;
}
int extIndex = file.lastIndexOf(EXTENSION_SEPARATOR);
if (extIndex == -1) {
return null;
}
int folderIndex = file.lastIndexOf(FOLDER_SEPARATOR);
if (folderIndex > extIndex) {
return null;
}
return file.substring(extIndex + 1);
}
/**
* 取得文件的后缀名。
* @param fileName 文件名
* @return 后缀名
*/
public static String getExtension(String fileName) {
if (Validators.isEmpty(fileName)) {
return null;
}
int pointIndex = fileName.lastIndexOf(".");
return pointIndex > 0 && pointIndex < fileName.length() ? fileName.substring(pointIndex + 1).toLowerCase()
: null;
}
/**
* @param filePath 指定的文件路径
* @param isNew true:新建、false:不新建
* @return 存在返回TRUE,不存在返回FALSE
* @desc:判断指定路径是否存在,如果不存在,根据参数决定是否新建
* @date:2014年8月7日
*/
public static boolean isExist(String filePath, boolean isNew) {
File file = new File(filePath);
if (!file.exists() && isNew) {
//新建文件路径
return file.mkdirs();
}
return false;
}
/**
* 获取文件名,文件名构成:当前时间 + 10位随机数 + .type
*
* @param type 文件类型
* @return
* @autor:chenssy
* @date:2014年8月11日
*/
public static String getFileName(String type) {
return getFileName(type, "", "");
}
/**
* 获取文件名,构建结构为 prefix + yyyyMMddHH24mmss + 10位随机数 + suffix + .type
* @param type 文件类型
* @param prefix 前缀
* @param suffix 后缀
* @return
* @date:2014年8月11日
*/
public static String getFileName(String type, String prefix, String suffix) {
//当前时间
String date = DateTools.getCurrentTime("yyyyMMddHH24mmss");
//10位随机数
String random = RandomUtils.generateNumberString(10);
//返回文件名
return prefix + date + random + suffix + "." + type;
}
/**
* 获取文件名,文件构成:当前时间 + 10位随机数
*
* @return
* @date:2014年8月11日
*/
public static String getFileName() {
//当前时间
String date = DateTools.getCurrentTime("yyyyMMddHH24mmss");
//10位随机数
String random = RandomUtils.generateNumberString(10);
//返回文件名
return date + random;
}
/**
* 删除所有文件,包括文件夹
*
* @param dirpath
* @date : 2016年5月23日 下午12:41:08
*/
public void deleteAll(String dirpath) {
File path = new File(dirpath);
try {
if (!path.exists()) {
return;// 目录不存在退出
}
// 如果是文件删除
if (path.isFile())
{
path.delete();
return;
}
// 如果目录中有文件递归删除文件
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++) {
deleteAll(files[i].getAbsolutePath());
}
path.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 复制文件或者文件夹
*
* @param inputFile 源文件
* @param outputFile 目的文件
* @param isOverWrite 是否覆盖文件
* @throws IOException
* @date : 2016年5月23日 下午12:41:59
*/
public static void copy(File inputFile, File outputFile, boolean isOverWrite)
throws IOException {
if (!inputFile.exists()) {
throw new RuntimeException(inputFile.getPath() + "源目录不存在!");
}
copyPri(inputFile, outputFile, isOverWrite);
}
/**
* 复制文件或者文件夹
*
* @param inputFile 源文件
* @param outputFile 目的文件
* @param isOverWrite 是否覆盖文件
* @throws IOException
* @date : 2016年5月23日 下午12:43:24
*/
private static void copyPri(File inputFile, File outputFile, boolean isOverWrite) throws IOException {
if (inputFile.isFile()) {
//文件
copySimpleFile(inputFile, outputFile, isOverWrite);
} else {
//文件夹
if (!outputFile.exists()) {
outputFile.mkdirs();
}
// 循环子文件夹
for (File child : inputFile.listFiles()) {
copy(child, new File(outputFile.getPath() + "/" + child.getName()), isOverWrite);
}
}
}
/**
* 复制单个文件
*
* @param inputFile 源文件
* @param outputFile 目的文件
* @param isOverWrite 是否覆盖
* @throws IOException
* @date : 2016年5月23日 下午12:44:07
*/
private static void copySimpleFile(File inputFile, File outputFile,
boolean isOverWrite) throws IOException {
if (outputFile.exists()) {
//可以覆盖
if (isOverWrite) {
if (!outputFile.delete()) {
throw new RuntimeException(outputFile.getPath() + "无法覆盖!");
}
} else {
// 不允许覆盖
return;
}
}
InputStream in = new FileInputStream(inputFile);
OutputStream out = new FileOutputStream(outputFile);
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
out.close();
}
/**
* 文件重命名
*
* @param oldPath 老文件
* @param newPath 新文件
* @date : 2016年5月23日 下午12:56:05
*/
public boolean renameDir(String oldPath, String newPath) {
File oldFile = new File(oldPath);
File newFile = new File(newPath);
return oldFile.renameTo(newFile);
}
/**
* 获取指定文件的大小
*
* @param file
* @return
* @throws Exception
* @date : 2016年4月30日 下午9:10:12
*/
@SuppressWarnings("resource")
public static long getFileSize(File file) throws Exception {
long size = 0;
if (file.exists()) {
FileInputStream fis;
fis = new FileInputStream(file);
size = fis.available();
} else {
file.createNewFile();
}
return size;
}
}
相关推荐
JAVA对文件夹、文件的各种操作工具类
JAVA对文件夹、文件的各种操作,创建文件夹,删除文件夹,创建文件,删除文件,复制文件等
java文件操作工具类(FileUtils)
Java文件操作工具类(FileUtils)是一个常见的工具类,用于简化Java程序中对文件的操作。它提供了许多静态方法,可以帮助开发人员快速读取、写入、复制、移动、删除文件等操作。以下是Java文件操作工具类(FileUtils)的一些常用方法和功能:读取文件内容:提供了读取文件内容的方法,包括读取全部内容和按行读取内容。可以使用这些方法将文件内容读取到String或List对象中。写入文件内容:提供了写入文件内容的方法,可以将指定的字符串或字节数组写入文件中。还可以选择是否追加内容到文件末尾。
疾病负担研究(GBD)介绍
今天我们来聊一聊第一个公共数据库——GBD数据库,全称叫做global burden of disease(全球疾病负担),该数据库每年都会更新,目前已经更新到GBD2019。 这里直接给大家贴出网址:Global Burden of Disease Study 2019 (GBD 2019) Data Resources | GHDx 上图中红色圈圈标识的就是数据库的数据获取界面的链接,大家直接点击即可. 数据的检索十分方便: Context下拉菜单中可以选择不同的选项,默认是caus
java web 删除文件(文件夹)
java web 删除文件或文件夹
Unity集成阿里云语音AI:从麦克风录音到实时语音合成的全流程实现
本文详细介绍了在Unity中集成阿里云语音AI服务,实现从麦克风录音到实时语音合成的完整流程。通过调用阿里云的语音转文字和文字转语音接口,开发者可以快速为游戏或应用添加语音交互功能,提升用户体验。文章涵盖了环境配置、签名认证、音频处理及项目集成等核心步骤,并提供了实用的调试技巧。
用Python玩转Milvus:从安装SDK到完成第一个向量搜索Demo
本文为Python开发者提供了一份详细的Milvus向量数据库实战指南。文章重点讲解了如何规避版本兼容性陷阱,正确部署Milvus服务端并安装匹配的Python SDK。通过一个电影推荐系统的完整案例,演示了从数据建模、集合创建、向量插入、索引构建到执行混合搜索的全流程,帮助开发者快速上手并完成第一个向量搜索Demo。
Java进阶,file类,IO流
Java进阶,file类,IO流
图解说明JLink驱动与目标板电源匹配的关键细节
深入讲解JLink驱动安装及使用过程中,如何正确匹配目标板电源,避免常见通信故障。通过图解方式清晰展示关键连接细节,确保调试稳定可靠,是嵌入式开发中不可或缺的实战经验分享。
Java中关于文件的操作
一打开文件: File f = new File(“D:/代码/aa.txt”);//这一般是一个绝对的地址,一般在同一个文件中。 文件类的一些方法: f.delete(); //删除file f.exists(); //file是否存在 f.getName(); //得到file名字 f.isDirectory(); //file是否是文件夹 f.isFile(); //file是否...
SolidWorks 小车底盘 装配体
通过制作小车底盘了解solidworks装配体的部分知识
SAP RAP 里的 EML 全解:从语言定位到事务语义,再到真实案例的落地方式
摘要:EML(Entity Manipulation Language)是ABAP RAP模型的核心组件,作为ABAP的子集用于操作业务对象(BO)。它通过声明式语法(READ/MODIFY/EXECUTE/COMMIT)统一访问BO的行为与数据,并由RAP运行时自动处理校验、锁定、草稿管理等生命周期。EML将业务语义融入代码,确保与Fiori应用共享同一套校验逻辑,并通过FAILED/REPORTED/MAPPED管道传递错误与消息。其事务控制(IN LOCAL MODE与COMMIT ENTITIES)
java file 工具_java file操作工具类
package com.test.web.utils;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;impo...
ABAP Cloud 开发教程的文章目录
本教程涵盖 ABAP 云端 Client 处理、多租户架构、ABAP Cloud开发、动态编程优化、SQL语法改进等技术主题。最新版本1.0.0(更新至2025-12-12),包含197篇文章,重点文章包括《ABAP Client Handling与隔离机制》《ABAP Platform 2021泛型编程》《SAP BTP ABAP多租户应用开发》等,为开发者提供从基础到进阶的实战指南。
[工具类] HDFS
package com.claw.util.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.apache.hadoop.io.IOUtils; import com.claw.util.string.StringUtil; import...
Vivado报错-4 [Routed 35-3424] SLL Assignment failed ILP VU19P
Vivado报错[Routed 35-3424] SLL Assignment failed ILP VU19P
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
java复制指定l文件并重命名_Java zip 压缩 文件夹删除,移动,重命名,复制
import java.io.*;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/*** 文件操作* Created by heavenick on 2015/7/8.*/public class FileUtil {public static void main(S...
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
【Java】文件操作 File 类(创建文件、删除、创建目录,查询文件信息)
File类本身只是操作文件的,不涉及到内容;File中的重要方法:*设置完整路径:public File(String pathname);*删除文件:public boolean delete();*判断文件是否存在:public boolean exists()*找到父路径:public File getParentFile();*创建目录:public boolean mkdir();在使用File类操作的时候路径的分隔符使用:File.separator;
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
java文件工具类,判断文件是否存在,删除文件或文件夹等
package org.pdown.core.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccess...
java 如何创建一个工具类_一个简单的Java文件工具类
1 packagecom.xyworkroom.ntko.util;23 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.io.InputStream;8 importjava.io.OutputS...
3、HBase的java API基本操作(创建、删除表以及对数据的添加、删除、查询以及多条件查询)
要操作Hbase也需要建立Hbase的连接。使用@BeforeTest初始化HBase连接,创建admin对象、@AfterTest关闭连接。以上,完成了通过java api简单操作hbase的示例,如果需要更多更深入的使用,则需要参看官方文档。注意:在哪个环境操作就使用哪个环境的配置文件,或者开发测试时直接在代码中设置zookeeper的地址。本文主要介绍了通过java api操作hbase的基本示例。本分主要分为2个部分,即maven依赖和源码示例。本文依赖hbase环境可用。
Java 快速创建及递归删除文件
Java File创建及递归删除文件 开发工具与关键技术:java、 elipse2019、jdk1.8 作者:Amewin 撰写时间:2019年4月13日 File 类的说明: 在 Java 中,File 类是java.io包中唯一代表磁盘文件本身的对象。File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期...
文件删除工具类
1.传递一个正确的文件路径: 注意--->这里文件分隔符是双反斜杠,需要转义: //要删除的文件磁盘路径 String deletePath = "E:\\phone_img" + "\\" +"文件路径" 2.删除文件或者文件夹的工具类: package com.admin.mall.utils; import java.io.File; /** * 删除...
File文件工具类FileUtil( 创建、复制、删除、文件名称修改、文件下载、压缩、预览)
File文件工具类FileUtil( 创建、复制、删除、文件名称修改、文件下载、压缩、预览)
Java工具类-文件及文件夹递归删除
几年前在工作中,使用java编写的一个对于文件及文件夹循环删除的工具类,话不多说,直接上代码: import java.io.File; /** * 删除文件和目录 * */ public class DeleteFileUtil { /** * 删除文件,可以是文件或文件夹 * * @param fileName * 要删除的文件名 * @return 删除成功返回true,否则返回false */ .
java 如果文件存在 删除文件_java文件工具类,判断文件是否存在,删除文件或文件夹等...
package org.pdown.core.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;imp...
Java 文件创建删除,获取根目录
Java 文件操作工具类 项目跟路径取得;文件/文件夹创建,删除 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; public class FileUtils { private static Logger logger = LoggerFactory.getLogger("FileUtils"); /** * 创建文件 * @param descFileN
2159



被折叠的 条评论
为什么被折叠?



