代码改变世界

.apache.commons.io 源代码学习(二)FilenameUtils类

2017-02-23 14:36  很大很老实  阅读(993)  评论(0编辑  收藏  举报

 

 FilenameUtils是apache common io中一个独立的工具类,对其他没有依赖,看其源代码的import即可知道。

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Stack;

 

这个类的目标是:

When dealing with filenames you can hit problems when moving from a Windows
 based development machine to a Unix based production machine.
This class aims to help avoid those problems.

 

我们在看看uml类图;

 

我们可以注意到,其提供的方法,基本都是静态的,所以,这个类我认为,大部分使用的时候,都不需要实例化,典型的工具类。

而其目标是在windows系统和unix系统之间的文件名转换,因此,最初就是定义了windows和unix系统的文件的分隔符

    public static final char EXTENSION_SEPARATOR = '.';
  public static final String EXTENSION_SEPARATOR_STR = Character.toString(EXTENSION_SEPARATOR);
    private static final char UNIX_SEPARATOR = '/';
    private static final char WINDOWS_SEPARATOR = '\\';
    private static final char SYSTEM_SEPARATOR = File.separatorChar;
    private static final char OTHER_SEPARATOR;

    static {
        if (isSystemWindows()) {
            OTHER_SEPARATOR = UNIX_SEPARATOR;
        } else {
            OTHER_SEPARATOR = WINDOWS_SEPARATOR;
        }
    }

  
    static boolean isSystemWindows() {
        return SYSTEM_SEPARATOR == WINDOWS_SEPARATOR;
    }

  这个,判断是否windows的方法很不错。