在Java编程中,常见的资源文件获取是读取XML文件与图片加载,实现的方法有多种,然而要保证代码的可移植,应该注意几个方面的问题.
一、类的跨项目调用与继承,在子类中需要得到父类资源文件路径时,最好不要用FILE类,也不要用this.getClass方法。否则在继承和踌项目调用时得到的是本类对象或对象所在项目中的路径,不是原来项目的路径。
二、静态调用有时不可靠,主要是有些对象未创建。
三、目前网上获取文件的方法多数为或this.getClass.getResource()或this.getClass.getresourceStream.如果你要打Jar包,这两个方法不能用this
四、ClassPathResource cr = new ClassPathResource(filename, Resources.class);是一个好的静态方法,Java应用程序中也能用
处理方法:
一、需要移植或引用的类中的代码一定不要用File等方式获取资源
二、统一一个资源读取的类
三、如果需要可能需要打包,最后将资源和类放到同一个包或子包中,以方便Jar包中读取路径信息
package resources;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.FileCopyUtils;
import rdrm.res.ResourcesPath;
public class Resources {
public static void main(String[] arg) throws IOException {
getXmlElement("resources.xml", ResourcesPath.KEY_NAME_APP_NODE);
}
/**
* @param <T>
* 获取图像对象,<font color=red size=3>静态调用,需要org.springframework.core-3.1.0.M1</font>
* @param filename 图像