zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    OilPaint(转载/实验)
    UE4 3D artist
    render pipeline about (翻译)
    Python 相对导入 碎碎念
    USF, USH Grammar
    JZ19 顺时针打印矩阵
    JZ49 把字符串转换成整数
    JZ45 扑克牌顺子
    JZ53 表示数值的字符串
    JZ48 不用加减乘除做加法
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/15744619.html
Copyright © 2011-2022 走看看