Java 文件名操作的相关工具类
项目中的操作文件名的工具类:
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class FileNameUtil {
/**
* 修改指定文件的扩展名
* @param fileName
* @param newExt
* @return
*/
public static String changeFileExt(String fileName, String newExt){
return fileName.replaceAll("\\.[^\\.\\\\/]*$", "") + "." + newExt.replaceAll("^\\.", "");
}
/**
* 去掉文件的扩展名
* @param fileName
* @return
*/
public static String removeFileExt(String fileName){
return fileName.replaceAll("\\.[^\\\\/\\.]*$", "");
} /**
* 修正文件名错误,主要包括出现/的、双\\的
* @param fileName
* @return
*/
public static String correctFileName(String fileName){
return fileName.replaceAll("(?!^)[\\\\/]+", "\\\\");
}
/**
* 修正文件名错误,主要包括出现/的、双\\的 成为linux
* @param fileName
* @return
*/
public static String correctFileName4Linux(String fileName){
return fileName.replaceAll("(?!^)[\\\\/]+", "/");
} /**
* 判断文件是否存在
* @param fileName
* @return
*/
public static boolean isFileExists(String fileName){
//把一个或多个\或/替换成1个
File f = new File(correctFileName(fileName));
try{
return f.exists();
}finally{
f = null;
}
} /**
* 连接两个文件名
* @param base
* @param addition
* @return
*/
public static String fileNameAdd(String base, String addition){
return base.replaceAll("[\\\\/]+$", "") + "\\" + addition.replaceAll("^[\\\\/]+", "");
} /**
* 是不是UNC路径
* @param fileName
* @return
*/
public static boolean isUNC(String fileName){
return fileName.matches("^\\\\{2}[^\\\\/]+\\\\[\\s\\S]*$");
} /**
* 获取文件名的扩展名
* @param fileName
* @return
*/
public static String extractFileExt(String fileName){
Pattern p = Pattern.compile("\\.[^\\\\/.]+$");
Matcher m = p.matcher(fileName);
return m.find()? m.group() : "";
} /**
* 获取文件的路径(最后的\会被去掉)
* @param fileName
* @return
*/
public static String extractFilePath(String fileName){
return fileName.replaceAll("[\\\\/][^\\\\/]*$", "");
} /**
* 获取文件绝对路径的文件名部分
* @param fileName
* @return
*/
public static String extractFileName(String fileName){
return fileName.replaceAll("^[\\s\\S]*[\\\\/]", "");
} /**
* 获取相对路径(去掉盘符或UNC的主机)
* @param fileName
* @return
*/
public static String extractRelativePath(String fileName){
if(isUNC(fileName)){
return fileName.replaceAll("^\\\\{2}[^\\\\/]+[\\\\/]+", "");
}else{
return fileName.replaceAll("^.*\\:\\\\+", "");
}
} /**
* 把盘符 和 文件路径拼接起来 得到完整的文件地址,自动判断拼接的时候前面是不是有 斜杠
* @param driverOrLpath windows系统下的盘符,或者是linux系统下的路径
* @param filename 文件的路径 如: 二次合成\2011\IPTV\上海文广\电影\123456_变形金刚.ts
*/
public static String joinPath(String driverOrLpath,String filename ){
String d = driverOrLpath.replaceAll("[\\\\/]*$", "") ;
filename = filename.replaceAll("^[\\\\/]*", ""); // 把开头的 斜杠都去掉,后面统一加 return d + File.separator + filename;
} /**
* 功能:替换掉文件名字中的特殊字符
* 时间:2016-01-21
* @param filename
* @return
*/
public static String removeSpecialcharacter(String filename){
Pattern pattern=Pattern.compile("[\u4e00-\u9fa5]");//中文汉字编码区间
Matcher matcher;
char[] array = filename.toCharArray();
for (int i = 0; i < array.length; i++) {
if((char)(byte)array[i]!=array[i]){//取出双字节字符
matcher=pattern.matcher(String.valueOf(array[i]));
if(!matcher.matches()){//中文汉字无需替换
filename=filename.replaceAll(String.valueOf(array[i]), "");//特殊字符用空字符串替换
}
}
}
return filename;
} public static void main(String[] args) { }
}
得到一个文件/目录下文件名/路径 或者是子文件的子文件名....
/*
* 如果想要获得当前文件中的文件名只需要String [] fileName = file.list();就可以了。
* 如果要包括文件中的文件名就可以用递归的方式。下面是两个具体的实现。
* 其中public static String [] getFileName(String path)是只得到当前文件中的文件名。
* public static void getAllFileName(String path,ArrayList<String> fileName)是包括当前文件及其子文件的文件名。
*/
public static String[] getFileName(String path) {
File file = new File(path);
String[] fileName = file.list();
return fileName;
} public static ArrayList<String> getFilePath(String parentPath) {
ArrayList<String> childFilesPathList = new ArrayList<String>();
File parentFile = new File(parentPath);
File[] childFiles = parentFile.listFiles();
for (File childFile : childFiles) {
childFilesPathList.add(childFile.getAbsolutePath());
}
return childFilesPathList;
} public static void getAllFileName(String path, ArrayList<String> fileName) {
File file = new File(path);
File[] files = file.listFiles();
String[] names = file.list();
if (names != null)
fileName.addAll(Arrays.asList(names));
for (File a : files) {
if (a.isDirectory()) {
getAllFileName(a.getAbsolutePath(), fileName);
}
}
}
Java 文件名操作的相关工具类的更多相关文章
- Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Java代码操作HDFS测试类
1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...
- Java POI操作Excle工具类
用到了jxl.jar和poi.jar 一些基本的操作Excel的操作方法: import java.io.File; import java.io.FileInputStream; import ja ...
- Java 数据库操作之Dao类
package Dao; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; imp ...
- Java IP白名单相关工具类
关于设置IP白名单相关的一些方法,整理,记录了一下. package com.tools.iptool; import java.util.ArrayList; import java.util.Ha ...
- Java IO流操作(III)——File类&案例一:输出制定目录下所有java文件名(包含子目录)&案例二:删除指定的目录(包含子目录)
1. File常用的构造 File file = new File("字符串路径"); File f = new File("D:\\a\\b.txt"); F ...
- java中文件操作的工具类
代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...
- JAVA文件操作类和文件夹的操作代码示例
JAVA文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件 ...
随机推荐
- Java设计模式---工厂方法模式(Factory-Method)
一.普通工厂模式 建立一个工厂类,对实现了同一接口的一些类进行实例的创建 实例代码: 发送短信和邮件的例子,首先创建接口: public interface Sender { public void ...
- JDBC学习笔记(6)——获取自动生成的主键值&处理Blob&数据库事务处理
获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: /** * 获取数据 ...
- Java设计模式系列之观察者模式
观察者模式 Observer的定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象. 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己. 第一 ...
- Gradle – Spring 4 MVC Hello World Example
In this tutorial, we will show you a Gradle + Spring 4 MVC, Hello World Example (JSP view), XML conf ...
- C# 中的sealed修饰符学习
转载原地址 http://developer.51cto.com/art/200908/147327.htm C#语言还是比较常见的东西,这里我们主要介绍C# sealed修饰符,包括介绍两个修饰符在 ...
- HDU 2063 过山车(二分匹配入门)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 二分匹配最大匹配数简单题,匈牙利算法.学习二分匹配传送门:http://blog.csdn.ne ...
- 被mysql中的wait_timeout坑了
今天被mysql里的wait_timeout坑了 网上能搜到很多关于mysql中的wait_timeout相关的文章,但是大多数只是说明了他的作用,而且都说这个参数要配合那个inter ...
- 8086、80x86(IA-32)、64(IA-64)位CPU发展
众所周知,CPU(中央处理单元)是计算机的核心部分,CPU在单位时间内能一次处理的二进制数的位数叫字长,从386.486直到奔腾系列的CPU都是32位,大多数情况32位计算已经能满足现阶段人们的需要. ...
- MemCacheManager
#region Fields private AreaRepository _areaRepository = new AreaRepository(); private ICacheManager ...
- C语言快排
C语言使用快排的方式有两种,1.直接用库函数stdlib.h里的qsort函数 2.自己编写快排代码(第一种方便,第二种较为自由) qsort 的函数原型是:void qsort(void*base, ...