Java编程中资源文件获取的方法与坑

Java编程中,资源文件如XML和图片的获取是个挑战,尤其在考虑代码移植和项目间调用时。文章指出使用FILE类和this.getClass方法在跨项目继承中可能导致路径错误,静态调用可能因对象未创建而不可靠。常见方法如getResource和getResourceAsStream在打包成Jar时也可能失效。推荐使用ClassPathResource,并建议统一资源读取类,将资源与类放在同一包内,以解决打包后路径问题。
摘要由CSDN通过智能技术生成

在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 图像
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值