package net.uvct.util;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOCase;import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
/**
* 文件工具类
* @author preference
*
*/
public class FileUtils {
public final static int max = 3;//保存文件的数量最大个数
/**
*
* @方法名:getBaseName
* @方法描述【方法功能描述】从路径中获取去除后缀的文件名
* @param filename 文件路径
* @return 去除后缀的文件名
*/
public static String getBaseName(String filename) {
return FilenameUtils.getBaseName(filename);
}
/**
*
* @方法名:getExtension
* @方法描述【方法功能描述】 从文件路径中获取文件的扩展名
* @param filename 文件路径
* @return 文件扩展名
*/
public static String getExtension(String filename) {
return FilenameUtils.getExtension(filename);
}
/**
*
* @方法名:getFullPath
* @方法描述【方法功能描述】 从文件路径中获取文件的父路径
* @param filename 文件路径
* @return 文件的父路径
*/
public static String getFullPath(String filename) {
return FilenameUtils.getFullPath(filename);
}
/**
*
* @方法名:getName
* @方法描述【方法功能描述】从文件路径中获取文件的全名(包含后缀)
* @param filename 文件路径
* @return 文件的全名(包含后缀)
*/
public static String getName(String filename) {
return FilenameUtils.getName(filename);
}
/**
*
* @方法名:concat
* @方法描述【方法功能描述】拼接目录+文件
* @param basePath 目录
* @param fullFilenameToAdd 文件
* @return 文件路径
*/
public static String concat(String basePath, String fullFilenameToAdd) {
return FilenameUtils.concat(basePath, fullFilenameToAdd);
}
/**
*
* @方法名:directoryContains
* @方法描述【方法功能描述】查询父文件夹是否包含子文件
* @param canonicalParent 父目录
* @param canonicalChild 子文件、子目录
* @return 父目录是否包含子文件/子目录
*/
public static boolean directoryContains(String canonicalParent, String canonicalChild) throws IOException {
return FilenameUtils.directoryContains(canonicalParent, canonicalChild);
}
/**
*
* @方法名:equals
* @方法描述【方法功能描述】判断两个文件路径是否表示同一文件,会进行格式化,并且不进行大小写区分
* @param filename1 文件路径1
* @param filename2 文件路径2
* @return 两个文件路径是否表示同一文件
*/
public static boolean equals(String filename1, String filename2) {
return FilenameUtils.equals(filename1, filename2, true, IOCase.INSENSITIVE);
}
/**
*
* @方法名:isExtension
* @方法描述【方法功能描述】判断文件路径的扩展名是否包含在指定扩展名内
* @param filename 文件路径
* @param extensions 指定扩展名集合
* @return 是否包含
*/
public static boolean isExtension(String filename, String[] extensions) {
return FilenameUtils.isExtension(filename, extensions);
}
/**
*
* @方法名:separatorsToSystem
* @方法描述【方法功能描述】根据系统格式化文件路径
* @param filename 文件路径
* @return 格式化后的路径
*/
public static String separatorsToSystem(String filename) {
return FilenameUtils.separatorsToSystem(filename);
}
/**
*
* @方法名:normalize
* @方法描述【方法功能描述】根据指定系统格式化文件路径
* @param filename 文件路径
* @param unixSeparator 是否为unix系统
* @return 格式化的路径
*/
public static String normalize(String filename, boolean unixSeparator) {
return FilenameUtils.normalize(filename, unixSeparator);
}
/**
*
* @方法名:wildcardMatch
* @方法描述【方法功能描述】判断文件路径是否能够匹配通配符并指定是否区分大小写
* @param filename 文件路径
* @param wildcardMatcher 通配符
* @param caseSensitivity 是否区分大小写;IOCase.INSENSITIVE不区分大小写;IOCase.SENSITIVE区分大小写;IOCase.SYSTEM根据系统决定
* @return 是否满足通配符
*/
public static boolean wildcardMatch(String filename, String wildcardMatcher, IOCase caseSensitivity) {
return FilenameUtils.wildcardMatch(filename, wildcardMatcher, caseSensitivity);
}
/**
*
* @方法名:changeFilenameSuffix
* @方法描述【方法功能描述】 修改文件后缀
* @param name 文件名称或路径
* @param suffix 新后缀(不带点,如:docx|xls|txtStringUtils.isBlank(suffix))
* @return 使用新后缀的文件名
*/
public static String changeFilenameSuffix(String name, String suffix) {
if (name == null || "".equals(name) || name.lastIndexOf(".") == -1 || suffix == null || "".equals(suffix))
return name;
String prefix = name.substring(0, name.lastIndexOf(".") + 1);
return prefix + suffix;
}
public static void main(String[] args) {
try {
}
catch (Exception e) {
System.out.println(e);
}
}
/**
* 文件还原功能
*
* 删除文件夹中最早产生的一个文件,如csv文件夹永远只保留max=3个最新的文件,超过3则删除一个文件
* 注意:是根据文件命名来delete的,所以必须要有公共的命名规则
* @param commonFileSuffix 文件夹下的文件名的公共后缀:如_areaMes.js
* @param fileDir 文件夹名称
* @param format 时间格式
*/
public static void deleteFurthestFile(String fileDir, String format, final String commonFileSuffix) {
try {
File dir = new File(fileDir);
if (!dir.exists())
return;
int currentNum = 0;
if (dir.exists())
currentNum = dir.listFiles().length; //得到当前文件夹文件数目
if (currentNum > max) { //删除产生时间最早的一个文件
//得到文件名的一个map
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
Map<Long, String> map = new HashMap<>();
for (File file1 : dir.listFiles()) {
String time = file1.getName().replace(commonFileSuffix, "");
Date date = simpleDateFormat.parse(time);
map.put(date.getTime(), file1.getName()); // <1233282716409,2018-2-1_log.txt>
}
//产生时间最早的文件名
long lt = Long.valueOf(Collections.min(map.keySet()).toString());
File f1 = new File(fileDir + map.get(lt));
if (f1.exists())
f1.delete();
}
} catch (ParseException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
}
获取去除文件后缀的方法java java去掉文件名后缀
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java 根据HttpEntity 中contenttype获取文件类型
java 根据HttpEntity 中contenttype获取文件类型
apache HTTP Apache