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
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)); |
|
} |
|
} |
|
} |