43 lines
1.5 KiB
Java
43 lines
1.5 KiB
Java
|
package org.ansj.dic;
|
|||
|
|
|||
|
import org.ansj.dic.impl.File2Stream;
|
|||
|
import org.ansj.dic.impl.Jar2Stream;
|
|||
|
import org.ansj.dic.impl.Jdbc2Stream;
|
|||
|
import org.ansj.dic.impl.Url2Stream;
|
|||
|
import org.ansj.exception.LibraryException;
|
|||
|
|
|||
|
import java.io.InputStream;
|
|||
|
|
|||
|
/**
|
|||
|
* 将路径转换为流,如果你需要实现自己的加载器请实现这个类,使用这个类可能需要自己依赖第三方包,比如jdbc连接和nutz
|
|||
|
*
|
|||
|
* @author ansj
|
|||
|
*
|
|||
|
*/
|
|||
|
public abstract class PathToStream {
|
|||
|
|
|||
|
public static InputStream stream(String path) {
|
|||
|
try {
|
|||
|
if (path.startsWith("file://")) {
|
|||
|
return new File2Stream().toStream(path);
|
|||
|
} else if (path.startsWith("jdbc://")) {
|
|||
|
return new Jdbc2Stream().toStream(path);
|
|||
|
} else if (path.startsWith("jar://")) {
|
|||
|
return new Jar2Stream().toStream(path);
|
|||
|
} else if (path.startsWith("class://")) {
|
|||
|
((PathToStream) Class.forName(path.substring(8).split("\\|")[0]).newInstance()).toStream(path);
|
|||
|
} else if (path.startsWith("http://") || path.startsWith("https://")) {
|
|||
|
return new Url2Stream().toStream(path);
|
|||
|
} else {
|
|||
|
return new File2Stream().toStream(path);
|
|||
|
}
|
|||
|
} catch (Exception e) {
|
|||
|
throw new LibraryException(e);
|
|||
|
}
|
|||
|
throw new LibraryException("not find method type in path " + path);
|
|||
|
}
|
|||
|
|
|||
|
public abstract InputStream toStream(String path);
|
|||
|
|
|||
|
}
|