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文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件 ...
随机推荐
- Test Spring el with ExpressionParser
Spring expression language (SpEL) supports many functionality, and you can test those expression fea ...
- ActiveX控件是什么?
一.ActiveX的由来 ActiveX最初只不过是一个商标名称而已,它所涵盖的技术并不是各自孤立的,其中多数都与Internet和Web有一定的关联.更重要的是,ActiveX的整体技术是由Micr ...
- [iOS 多线程 & 网络 - 2.10] - ASI框架下载文件
A.ASI框架中的下载 1.实现步骤 在实际的开发中如果要使用asi框架来下载服务器上的文件,只需要执行下面简单的几个步骤即可. (1)创建请求对象:(2)设置下载文件保存的路径:(3)发送下载文件的 ...
- [iOS UI进阶 - 6.1] 核心动画CoreAnimation
A.基本知识 1.概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对 ...
- Python多线程学习资料1
一.Python中的线程使用: Python中使用线程有两种方式:函数或者用类来包装线程对象. 1. 函数式:调用thread模块中的start_new_thread()函数来产生新线程.如下例: ...
- ASP.NET MVC 前端(View)向后端(Controller)中传值
在MVC中,要把前端View中的值传递给后端Controller, 主要有两种方法 1. 利用Request.Form 或者 Request.QueryString public ActionResu ...
- ASP.NET MVC程序传值方式:ViewData,ViewBag,TempData和Session
转载原地址 http://www.cnblogs.com/sunshineground/p/4350216.html 在ASP.NET MVC中,页面间Controller与View之间主要有以下几种 ...
- 转载Agile Development 敏捷软件开发介绍
转载原地址: http://blog.csdn.net/wayne_ran/article/details/1601008 敏捷开发(agile development)是一种以人为核心.迭代.循序渐 ...
- java读取properties的工具类PropertiesUtil
package org.properties.util; import java.io.FileInputStream; import java.io.FileOutputStream; import ...
- CSS 文本格式
整理自:(http://www.w3school.com.cn/css/css_text.asp) Text Color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - ...