Web環境の対応するパスを取得するツールクラス

3388 ワード

/**  
 *  web   
 *   
 * @author xwz  
 * @date Jan 5, 2010  
 */  
public class PathUtil {   
    public static final String CLASSES = getClassesPath();   
    public static final String WEB_INF = getWEB_INFPath();   
    public static final String WEB_ROOT = getWEB_ROOTPath();   
  
    /**   */  
    public static String getClassPath(Class cls) {   
        String s = cls.getResource("").getPath();   
        if (s.startsWith("/")) s = s.substring(1);   
        return s;   
    }   
  
    /**  classes  */  
    public static InputStream getInputStreamFromClasses(String packageNameAndFileName) {   
        try {   
            FileInputStream fin = new FileInputStream(CLASSES + packageNameAndFileName);   
            return fin;   
        } catch (FileNotFoundException e) {   
            e.printStackTrace();   
        }   
        return null;   
    }   
  
    /**  WEB-INF  */  
    public static InputStream getInputStreamFromWebInf(String fileName) {   
        try {   
            FileInputStream fin = new FileInputStream(WEB_INF + fileName);   
            return fin;   
        } catch (FileNotFoundException e) {   
            e.printStackTrace();   
        }   
        return null;   
    }   
  
    /**  
     *  jar   
     *   
     * @param oneClassInJar jar   
     * @param fileName  
     * @return  
     * @author xwz  
     */  
    public static InputStream getInputStreamFromJar(Class oneClassInJar, String fileName) {   
        InputStream is = oneClassInJar.getResourceAsStream(fileName);   
        return is;   
    }   
  
    private static String getClassesPath() {   
        String s = PathUtil.class.getResource("/").getPath();   
        if (s.startsWith("/")) s = s.substring(1);   
        return s;   
    }   
  
    private static String getWEB_INFPath() {   
        String s = "";   
  
        String classes = getClassesPath();   
        int last = classes.lastIndexOf("classes/");   
  
        return classes.substring(0, last);   
    }   
  
    private static String getWEB_ROOTPath() {   
        String s = "";   
  
        String classes = getClassesPath();   
        int last = classes.lastIndexOf("WEB-INF/classes/");   
  
        return classes.substring(0, last);   
    }   
  
    public static void main(String[] args) {   
        System.out.println(PathUtil.CLASSES);   
        System.out.println(PathUtil.WEB_INF);   
        System.out.println(PathUtil.WEB_ROOT);   
        System.out.println(PathUtil.getClassPath(User.class));   
  
        InputStream classesIn = PathUtil.getInputStreamFromClasses("config/fckeditor.cfg");   
        InputStream webinfIn = PathUtil.getInputStreamFromWebInf("tlds/c.tld");   
        InputStream jarIn = PathUtil.getInputStreamFromJar(User.class, "/resource/res.txt");   
    }   
}