eclipse中java項目獲取配置文件路徑的問題


 
文件路徑問題處理方法:
1把配置文件放到src folder
src folder 下的文件可以通過
MainTest.class.getClassLoader().getResource("decompress_shutdown.bat")方法獲取到。
2、通過../處理路徑
package com.hob.mvcapp.test;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Properties;
/**
* @author Administrator 根據文件名稱獲取項目中絕對路徑
*/
public class ClassLoaderUtil {
 
public static ClassLoader getClassLoader() {
return ClassLoaderUtil.class.getClassLoader();
}
public static InputStream getStream(String relativePath)
throws MalformedURLException, IOException {
if (!relativePath.contains("../")) {
return getClassLoader().getResourceAsStream(relativePath);
} else {
return ClassLoaderUtil.getStreamByExtendResource(relativePath);
}
}
public static InputStream getStream(URL url) throws IOException {
if (url != null) {
return url.openStream();
} else {
return null;
}
}
public static InputStream getStreamByExtendResource(String relativePath)
throws MalformedURLException, IOException {
return ClassLoaderUtil.getStream(ClassLoaderUtil
.getExtendResource(relativePath));
}
public static Properties getProperties(String resource) {
Properties properties = new Properties();
try {
properties.load(getStream(resource));
} catch (IOException e) {
throw new RuntimeException("couldn't load properties file '"
+ resource + "'", e);
}
return properties;
}
public static String getAbsolutePathOfClassLoaderClassPath() {
System.out.println(ClassLoaderUtil.getClassLoader().getResource("")
.toString());
return ClassLoaderUtil.getClassLoader().getResource("").toString();
}
/**
* @param relativePath
* @return 返回值是文件的絕對地址URL
* @throws MalformedURLException
*/
public static URL getExtendResource(String relativePath)
throws MalformedURLException {
System.out.println("傳入的相對路徑:" + relativePath); // ClassLoaderUtil.log.info(Integer.valueOf(relativePath.indexOf("../")))
// // ;
if (!relativePath.contains("../")) {
return ClassLoaderUtil.getResource(relativePath);
}
String classPathAbsolutePath = ClassLoaderUtil
.getAbsolutePathOfClassLoaderClassPath();
if (relativePath.substring(0, 1).equals("/")) {
relativePath = relativePath.substring(1);
}
System.out.println(Integer.valueOf(relativePath.lastIndexOf("../")));
String wildcardString = relativePath.substring(0,
relativePath.lastIndexOf("../") + 3);
relativePath = relativePath
.substring(relativePath.lastIndexOf("../") + 3);
int containSum = ClassLoaderUtil.containSum(wildcardString, "../");
classPathAbsolutePath = ClassLoaderUtil.cutLastString(
classPathAbsolutePath, "/", containSum);
String resourceAbsolutePath = classPathAbsolutePath + relativePath;
System.out.println("絕對路徑:" + resourceAbsolutePath);
URL resourceAbsoluteURL = new URL(resourceAbsolutePath);
return resourceAbsoluteURL;
}
private static int containSum(String source, String dest) {
int containSum = 0;
int destLength = dest.length();
while (source.contains(dest)) {
containSum = containSum + 1;
source = source.substring(destLength);
}
return containSum;
}
private static String cutLastString(String source, String dest, int num) {
// String cutSource=null;
for (int i = 0; i < num; i++) {
source = source.substring(0,
source.lastIndexOf(dest, source.length() - 2) + 1);
}
return source;
}
public static URL getResource(String resource) {
System.out.println("傳入的相對於classpath的路徑:" + resource);
return ClassLoaderUtil.getClassLoader().getResource(resource);
}
/**
* @param args
* @throws MalformedURLException
* 方法說明:根據文件獲取文件的絕對路徑
*/
public static void main(String[] args) throws MalformedURLException {
// ClassLoaderUtil.getExtendResource("../spring/dao.xml");
// ClassLoaderUtil.getExtendResource("../../../src/log4j.properties");
String url = ClassLoaderUtil.getExtendResource("../test/test.bat").toString();
System.out.println(url);
// System.out.println(ClassLoaderUtil.getClassLoader().getResource("../test/test.bat"));
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM