博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 文件名操作的相关工具类
阅读量:4908 次
发布时间:2019-06-11

本文共 6114 字,大约阅读时间需要 20 分钟。

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

1 import java.io.File;  2 import java.util.regex.Matcher;  3 import java.util.regex.Pattern;  4   5 public class FileNameUtil {  6     /**  7      * 修改指定文件的扩展名  8      * @param fileName  9      * @param newExt 10      * @return 11      */ 12     public static String changeFileExt(String fileName, String newExt){ 13         return fileName.replaceAll("\\.[^\\.\\\\/]*$", "") + "." + newExt.replaceAll("^\\.", ""); 14     } 15     /** 16      * 去掉文件的扩展名 17      * @param fileName 18      * @return 19      */ 20     public static String removeFileExt(String fileName){ 21         return fileName.replaceAll("\\.[^\\\\/\\.]*$", ""); 22     } 23      24     /** 25      * 修正文件名错误,主要包括出现/的、双\\的  26      * @param fileName 27      * @return 28      */ 29     public static String correctFileName(String fileName){ 30         return fileName.replaceAll("(?!^)[\\\\/]+", "\\\\"); 31     } 32     /** 33      * 修正文件名错误,主要包括出现/的、双\\的 成为linux  34      * @param fileName 35      * @return 36      */ 37     public static String correctFileName4Linux(String fileName){ 38         return fileName.replaceAll("(?!^)[\\\\/]+", "/"); 39     } 40      41     /** 42      * 判断文件是否存在  43      * @param fileName 44      * @return 45      */ 46     public static boolean isFileExists(String fileName){ 47         //把一个或多个\或/替换成1个 48         File f = new File(correctFileName(fileName)); 49         try{ 50             return f.exists(); 51         }finally{ 52             f = null; 53         } 54     } 55      56     /** 57      * 连接两个文件名 58      * @param base 59      * @param addition 60      * @return 61      */ 62     public static String fileNameAdd(String base, String addition){ 63         return base.replaceAll("[\\\\/]+$", "") + "\\" + addition.replaceAll("^[\\\\/]+", ""); 64     } 65      66     /** 67      * 是不是UNC路径  68      * @param fileName 69      * @return 70      */ 71     public static boolean isUNC(String fileName){ 72         return fileName.matches("^\\\\{2}[^\\\\/]+\\\\[\\s\\S]*$"); 73     } 74      75     /** 76      * 获取文件名的扩展名  77      * @param fileName 78      * @return 79      */ 80     public static String extractFileExt(String fileName){ 81         Pattern p = Pattern.compile("\\.[^\\\\/.]+$"); 82         Matcher m = p.matcher(fileName); 83         return m.find()? m.group() : ""; 84     } 85      86     /** 87      * 获取文件的路径(最后的\会被去掉)  88      * @param fileName 89      * @return 90      */ 91     public static String extractFilePath(String fileName){ 92         return fileName.replaceAll("[\\\\/][^\\\\/]*$", ""); 93     } 94      95     /** 96      * 获取文件绝对路径的文件名部分  97      * @param fileName 98      * @return 99      */100     public static String extractFileName(String fileName){101         return fileName.replaceAll("^[\\s\\S]*[\\\\/]", "");102     }103     104     /**105      * 获取相对路径(去掉盘符或UNC的主机)106      * @param fileName107      * @return108      */109     public static String extractRelativePath(String fileName){110         if(isUNC(fileName)){111             return fileName.replaceAll("^\\\\{2}[^\\\\/]+[\\\\/]+", "");112         }else{113             return fileName.replaceAll("^.*\\:\\\\+", "");114         }115     }116     117     /**118      * 把盘符 和 文件路径拼接起来 得到完整的文件地址,自动判断拼接的时候前面是不是有  斜杠 119      * @param driverOrLpath windows系统下的盘符,或者是linux系统下的路径120      * @param filename 文件的路径 如: 二次合成\2011\IPTV\上海文广\电影\123456_变形金刚.ts121      */122     public static String joinPath(String driverOrLpath,String filename ){123         String d = driverOrLpath.replaceAll("[\\\\/]*$", "") ;124         filename = filename.replaceAll("^[\\\\/]*", ""); // 把开头的 斜杠都去掉,后面统一加125         126         return d + File.separator + filename;127     }128     129     /**130      * 功能:替换掉文件名字中的特殊字符131      * 时间:2016-01-21132      * @param filename133      * @return134      */135     public static String removeSpecialcharacter(String filename){136          Pattern pattern=Pattern.compile("[\u4e00-\u9fa5]");//中文汉字编码区间  137            Matcher matcher;138            char[] array = filename.toCharArray();139            for (int i = 0; i < array.length; i++) {140                 if((char)(byte)array[i]!=array[i]){
//取出双字节字符141 matcher=pattern.matcher(String.valueOf(array[i]));142 if(!matcher.matches()){
//中文汉字无需替换143 filename=filename.replaceAll(String.valueOf(array[i]), "");//特殊字符用空字符串替换144 }145 }146 }147 return filename;148 }149 150 public static void main(String[] args) {151 152 }153 }

 

 得到一个文件/目录下文件名/路径  或者是子文件的子文件名....

1     /* 2      * 如果想要获得当前文件中的文件名只需要String [] fileName = file.list();就可以了。 3      * 如果要包括文件中的文件名就可以用递归的方式。下面是两个具体的实现。  4      * 其中public static String [] getFileName(String path)是只得到当前文件中的文件名。 5      * public static void getAllFileName(String path,ArrayList
fileName)是包括当前文件及其子文件的文件名。 6 */ 7 public static String[] getFileName(String path) { 8 File file = new File(path); 9 String[] fileName = file.list();10 return fileName;11 }12 13 public static ArrayList
getFilePath(String parentPath) {14 ArrayList
childFilesPathList = new ArrayList
();15 File parentFile = new File(parentPath);16 File[] childFiles = parentFile.listFiles();17 for (File childFile : childFiles) {18 childFilesPathList.add(childFile.getAbsolutePath());19 }20 return childFilesPathList;21 }22 23 public static void getAllFileName(String path, ArrayList
fileName) {24 File file = new File(path);25 File[] files = file.listFiles();26 String[] names = file.list();27 if (names != null)28 fileName.addAll(Arrays.asList(names));29 for (File a : files) {30 if (a.isDirectory()) {31 getAllFileName(a.getAbsolutePath(), fileName);32 }33 }34 }

 

转载于:https://www.cnblogs.com/DreamDrive/p/5760220.html

你可能感兴趣的文章
基础SQL汇总
查看>>
2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null
查看>>
MSMQ的简单使用
查看>>
cocos2dx移植android平台
查看>>
回应“主流WebGIS实现的原理.矢量地图”
查看>>
笔记50 | Android自定义View(一)
查看>>
aspectj 获取 连接点 方法!
查看>>
35个seo优化技巧
查看>>
poi横纵导出
查看>>
JAVA中Comparator的使用
查看>>
使用 Cosmos DB 创建和查询 NoSQL 表
查看>>
PAT1043 Is It a Binary Search Tree
查看>>
1044 Shopping in Mars
查看>>
Django 2 数据库配置
查看>>
weka文本分类之二 批量过滤
查看>>
SCM_SVN_CVS
查看>>
设计抗混叠滤波器的三大指导原则(转载)
查看>>
join() 和 sleep() 区别
查看>>
MySQL 'localhost' (10061)解决方法
查看>>
信息安全-1:python之playfair密码算法详解[原创]
查看>>