forked from fanruan/design
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.4 KiB
56 lines
2.4 KiB
9 years ago
|
package com.fr.file;
|
||
|
|
||
|
import com.fr.base.FRContext;
|
||
|
import com.fr.file.filetree.FileNode;
|
||
|
|
||
|
public class FILEFactory {
|
||
|
public static final String MEM_PREFIX = "mem://";
|
||
|
public static final String FILE_PREFIX = "file://";
|
||
|
public static final String ENV_PREFIX = "env://";
|
||
|
public static final String WEBREPORT_PREFIX = "webreport://";
|
||
|
|
||
|
private FILEFactory() {
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* 根据path生成FILE
|
||
|
* path might start with env://, file:// or mem://
|
||
|
* 也有可能就是一个普通的路径d:/foo/bar
|
||
|
*/
|
||
|
public static FILE createFILE(String path) {
|
||
|
String envPath = FRContext.getCurrentEnv().getPath().replaceAll("/", "\\\\");
|
||
|
if (path == null) {
|
||
|
return null;
|
||
|
} else if (path.startsWith(MEM_PREFIX)) {
|
||
|
return new MemFILE(path.substring(MEM_PREFIX.length()));
|
||
|
} else if (path.startsWith(ENV_PREFIX)) {
|
||
|
return new FileNodeFILE(new FileNode(path.substring(ENV_PREFIX.length()), false));
|
||
|
} else if (path.startsWith(envPath)) {
|
||
|
return new FileNodeFILE(new FileNode(path.substring(envPath.length() + 1), false));
|
||
|
} else if (path.startsWith(WEBREPORT_PREFIX)) {
|
||
|
return new FileNodeFILE(new FileNode(path.substring(WEBREPORT_PREFIX.length()), false),
|
||
|
FRContext.getCurrentEnv().getWebReportPath());
|
||
|
} else if (path.startsWith(FILE_PREFIX)) {
|
||
|
return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length())));
|
||
|
} else {
|
||
|
return new FileFILE(new java.io.File(path));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static FILE createFolder(String path) {
|
||
|
if (path == null) {
|
||
|
return null;
|
||
|
} else if (path.startsWith(MEM_PREFIX)) {
|
||
|
return new MemFILE(path.substring(MEM_PREFIX.length()));
|
||
|
} else if (path.startsWith(ENV_PREFIX)) {
|
||
|
return new FileNodeFILE(new FileNode(path.substring(ENV_PREFIX.length()), true));
|
||
|
} else if (path.startsWith(WEBREPORT_PREFIX)) {
|
||
|
return new FileNodeFILE(new FileNode(path.substring(WEBREPORT_PREFIX.length()), true),
|
||
|
FRContext.getCurrentEnv().getWebReportPath());
|
||
|
} else if (path.startsWith(FILE_PREFIX)) {
|
||
|
return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length())));
|
||
|
} else {
|
||
|
return new FileFILE(new java.io.File(path));
|
||
|
}
|
||
|
}
|
||
|
}
|