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

 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. Test Spring el with ExpressionParser

    Spring expression language (SpEL) supports many functionality, and you can test those expression fea ...

  2. ActiveX控件是什么?

    一.ActiveX的由来 ActiveX最初只不过是一个商标名称而已,它所涵盖的技术并不是各自孤立的,其中多数都与Internet和Web有一定的关联.更重要的是,ActiveX的整体技术是由Micr ...

  3. [iOS 多线程 & 网络 - 2.10] - ASI框架下载文件

    A.ASI框架中的下载 1.实现步骤 在实际的开发中如果要使用asi框架来下载服务器上的文件,只需要执行下面简单的几个步骤即可. (1)创建请求对象:(2)设置下载文件保存的路径:(3)发送下载文件的 ...

  4. [iOS UI进阶 - 6.1] 核心动画CoreAnimation

    A.基本知识 1.概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对 ...

  5. Python多线程学习资料1

    一.Python中的线程使用: Python中使用线程有两种方式:函数或者用类来包装线程对象. 1.  函数式:调用thread模块中的start_new_thread()函数来产生新线程.如下例: ...

  6. ASP.NET MVC 前端(View)向后端(Controller)中传值

    在MVC中,要把前端View中的值传递给后端Controller, 主要有两种方法 1. 利用Request.Form 或者 Request.QueryString public ActionResu ...

  7. ASP.NET MVC程序传值方式:ViewData,ViewBag,TempData和Session

    转载原地址 http://www.cnblogs.com/sunshineground/p/4350216.html 在ASP.NET MVC中,页面间Controller与View之间主要有以下几种 ...

  8. 转载Agile Development 敏捷软件开发介绍

    转载原地址: http://blog.csdn.net/wayne_ran/article/details/1601008 敏捷开发(agile development)是一种以人为核心.迭代.循序渐 ...

  9. java读取properties的工具类PropertiesUtil

    package org.properties.util; import java.io.FileInputStream; import java.io.FileOutputStream; import ...

  10. CSS 文本格式

    整理自:(http://www.w3school.com.cn/css/css_text.asp) Text Color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - ...