java使用相对路径操作文件的问题?谢谢!!!
1.目标:
操作和类同一个目录中的文件(读取.修改.新建)(文件名已知)
|--test
|------A.java
|------url.conf
读取已经解决:
InputStream file = this.getClass().getResourceAsStream(fileName);
修改新建如何解决?谢谢!!!
2 .目标:读取类路径下的文件,通过A读取test下面的所有文件,有更好的吗?
|--test
|------A.java
|------url.conf
|------url.conf
目前想到的方案:
public class GetXmlFileforWindowsImp implements IGetXmlFile {
public GetXmlFileforWindowsImp() {
}
//log
private static Logger logger = Logger.getLogger(GetXmlFileforWindowsImp.class);
/**
* 取得Path
* @return String
*/
private String getPath() {
String strPath = "";
String strDomainPath = this.getDomainPath();
String strPackagePath = this.getPackagePath();
if (strDomainPath.indexOf(strPackagePath) == -1) {
strPath = this.getDomainPath() + "/" + this.getPackagePath();
}
else {
strPath = strDomainPath;
}
return strPath;
}
/**
* 取得DomainPath的路径
* @return String
*/
private String getDomainPath() {
String strDomain = this.getClass().getProtectionDomain().toString();
String domainPath = this.parseDomainPath(strDomain);
return domainPath;
}
/**
* 返回DomainPath
* @param string String
* @return String
*/
private String parseDomainPath(String string) {
String strPath = string.substring(string.indexOf("(") + 1, string.indexOf(")"));
int first = strPath.indexOf("/");
int second = strPath.lastIndexOf("/");
String parseDomainPath = strPath.substring(first + 1, second);
return parseDomainPath;
}
/**
* 取得package的路径
* @param string String
* @return String
*/
private String getPackagePath() {
String strpackage = this.getClass().getPackage().toString();
return this.parsePackagePath(strpackage);
}
/**
* 截取package的路径,并进行转换将“.”转换为//
* @param string String
* @return String
*/
private String parsePackagePath(String string) {
String t_packagePath = string.substring(8);
// packagePath.replaceAll(".","\\");
String packagePath = StringUtils.replace(t_packagePath, ".", "/");
return packagePath;
}
/**
* 只截取XMl文件
* @return ArrayList 里面存的的是File对象
*/
public List getXmlFiles() {
logger.info(Constant.OUT);
logger.info("po到vo的转换文件的目录的读取!!");
ArrayList al = new ArrayList();
String Path = this.getPath();
File file = new File(Path);
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].getPath().indexOf(".XML") != -1 || files[i].getPath().indexOf(".xml") != -1) {
logger.info("加载的文件名称:" + files[i]);
al.add(files[i]);
}
}
logger.info(Constant.OUT);
return al;
}
// public static void main(String arg[]) {
// GetXmlFileforWindowsImp get = new GetXmlFileforWindowsImp();
// get.getPath();
// }
}