Java 文件名操作的相关工具类 & Java中windows路径转换成linux路径等工具类

Java 文件名操作的相关工具类

 

  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 fileName
107      * @return
108      */
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_变形金刚.ts
121      */
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-21
132      * @param filename
133      * @return
134      */
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<String> 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<String> getFilePath(String parentPath) {
14         ArrayList<String> childFilesPathList = new ArrayList<String>();
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<String> 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     }

 

Java中windows路径转换成linux路径等工具类

 我总结的类似相关博客:http://www.cnblogs.com/DreamDrive/p/4289860.html

  1 import java.net.InetAddress;
  2 import java.net.UnknownHostException;
  3 import java.util.List;
  4 
  5 /**
  6  * OS Utility Class This is used to obtain the os related var programmatically
  7  * 
  8  * <p>
  9  * <a h ref="OSUtil.java.html"><i>View Source</i></a>
 10  * </p>
 11  * 
 12  *  13  */
 14 public class OSUtil {
 15     
 16     public static String LIUNX = "Linux";
 17     public static String WINDOWS = "Windows";
 18     
 19     
 20     /**
 21      * 功能: 将windows路径转换成linux路径
 22      */
 23     public static String convert2linuxPath(String _path){
 24         if(isLinuxSystem()){
 25             int index = _path.indexOf(":");
 26             if(index>1 || index == -1) //不含有盘符
 27 
 28                 return _path;
 29             
 30             SysstoredevMgr _sM = new SysstoredevMgr() ;
 31             List<Sysstoredev> _list = _sM.findAll() ;
 32             for( Sysstoredev _sd : _list ){
 33                 String _driver = ConvertString.ConvertStr(_sd.getDriver()) ;
 34                 if(_path.startsWith(_driver)){
 35                      return FileNameUtil.correctFileName4Linux(_path.replace(_driver, ConvertString.ConvertStr(_sd.getLpath()))) ;
 36                 }
 37             }
 38         }
 39         return _path;
 40     }
 41     
 42     
 43     /**
 44      * 获得主机名称
 45      * obtain the host name in form of string
 46      * 
 47      * @return String
 48      * @throws UnknownHostException
 49      */
 50     public static String getHostName() throws UnknownHostException {
 51         InetAddress inetaddr = InetAddress.getLocalHost();
 52         return inetaddr.getHostName();
 53     }
 54 
 55     /**
 56      * 获得主机IP
 57      * obtain the ip address of the host in form of string
 58      * 
 59      * @return String
 60      * @throws UnknownHostException
 61      */
 62     public static String getHostIP() throws UnknownHostException {
 63         InetAddress inetaddr = InetAddress.getLocalHost();
 64         return inetaddr.getHostAddress();
 65     }
 66 
 67     /**
 68      * 测试给定的主机是否是本地主机.
 69      * check if the given host is the local host
 70      * 
 71      * @param hostname String
 72      * @param hostip   String
 73      * @return boolean
 74      * @throws UnknownHostException
 75      */
 76     public static boolean isNative(String hostname, String hostip) {
 77         try {
 78             hostname = (hostname == null ? "" : hostname);
 79             hostip = (hostip == null ? "" : hostip);
 80 
 81             InetAddress inetaddr = InetAddress.getLocalHost();
 82             if (hostname.equals(""))
 83                 return inetaddr.getHostAddress().equalsIgnoreCase(hostip);
 84 
 85             if (!inetaddr.getHostName().equalsIgnoreCase(hostname))
 86                 return false;
 87 
 88             if (hostip.length() > 0) {
 89                 InetAddress[] inetaddrs = InetAddress.getAllByName(inetaddr.getHostName());
 90                 boolean b = false;
 91                 for (int i = 0; i < inetaddrs.length; i++) {
 92                     if (inetaddrs[i].getHostAddress().equalsIgnoreCase(hostip)) {
 93                         b = true;
 94                         break;
 95                     }
 96                 }
 97                 return b;
 98             } else {
 99                 return true;
100             }
101         } catch (UnknownHostException e) {
102             return false;
103         }
104     }
105 
106     /**
107      * 获得指定的环境变量的值
108      * @param envvarname
109      * @param defaultvalue
110      * @return
111      */
112     public static String getEnvironmentVar(String envvarname,
113             String defaultvalue) {
114         String str = System.getenv(envvarname);
115         str = (str == null ? "" : str);
116         return (str.length() == 0 ? defaultvalue : str);
117     }
118     
119     
120     /**
121      * 判断是否是Linux操作系统
122      * @return
123      */
124     public static Boolean isLinuxSystem(){
125         if(OSUtil.LIUNX.equals(System.getProperty("os.name"))){
126             return true;
127         }
128         return false;
129     }
130     
131 
132     public static void main(String[] args) throws Exception{
133         
134         System.out.println(OSUtil.convert2linuxPath("M:\\hello\\abc.txt"));
135         
136         System.out.println(OSUtil.convert2linuxPath("M:\\hello/abc.txt"));
137         
138         System.out.println(OSUtil.convert2linuxPath("/linux/p\\u.png"));
139         
140     }
141 
142 }

 

posted @ 2021-12-29 13:46  kelelipeng  阅读(1114)  评论(0编辑  收藏  举报