项目中的操作文件名的工具类:

 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 文件名操作的相关工具类的更多相关文章

  1. Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  2. Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  3. Java代码操作HDFS测试类

    1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...

  4. Java POI操作Excle工具类

    用到了jxl.jar和poi.jar 一些基本的操作Excel的操作方法: import java.io.File; import java.io.FileInputStream; import ja ...

  5. Java 数据库操作之Dao类

    package Dao; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; imp ...

  6. Java IP白名单相关工具类

    关于设置IP白名单相关的一些方法,整理,记录了一下. package com.tools.iptool; import java.util.ArrayList; import java.util.Ha ...

  7. Java IO流操作(III)——File类&案例一:输出制定目录下所有java文件名(包含子目录)&案例二:删除指定的目录(包含子目录)

    1. File常用的构造 File file = new File("字符串路径"); File f = new File("D:\\a\\b.txt"); F ...

  8. java中文件操作的工具类

    代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...

  9. JAVA文件操作类和文件夹的操作代码示例

    JAVA文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件 ...

随机推荐

  1. 第二百九十八天 how can I 坚持

    晚上和同学一块吃了个饭,聊了好多. 晚上回来的路上,突然想起一句话,现在又忘了. 睡觉. 人生平淡也好,光彩也罢,只是一个历程,算了,睡觉.

  2. 第二百四十天 how can I 坚持

    在家待了一天,晚上出去买了个帽子,还有买了点排骨炖着吃了... 玩了好多局游戏. 想搞个直播,不知道能不能玩的起来. 水平太菜了,明天去小米之家玩玩. 睡觉.

  3. Hibernate入门(1)-第一个Hibernate程序

    Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...

  4. I - Control - HDU 4289 (最大流)

    题意:有N个城市,现在城市S出现了一伙歹徒,他们想运送一些炸弹到D城市,不过警方已经得到了线报知道他们的事情,不过警察不知道他们所在的具体位置,所以只能采取封锁城市的办法来阻断暴徒,不过封锁城市是需要 ...

  5. 汇总:Linux下svn命令大全

    svn(subversion)是近年来崛起的版本管理工具,svn服务器有2种运行方式:独立服务器和借助apache.2种方式各有利弊.不管是那种方式,都需要使用各种命令来实现.在本文中,haohtml ...

  6. poj3687

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9028   Accepted: 2444 De ...

  7. js正则验证手机号

    var regp = /^(\+86|86|)1[3458][0-9]{9}$/; if(str==""){ var flag = checkstatus(obj,"&q ...

  8. 通过 监听器获取sessionId

    package shopping; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpSess ...

  9. Python 结巴分词模块

    原文链接:http://www.gowhich.com/blog/147?utm_source=tuicool&utm_medium=referral PS:结巴分词支持Python3 源码下 ...

  10. Parallax Occlusion Mapping

    如上图,本来是采样original texture coordinates点的颜色,其实却采样了correcter texture coordinates点的颜色. 而且会随着视线的不同看到凹凸程度变 ...