java 获取方法,获取java资源的方法

获取java资源的方法

获取java资源的方法

在开发java程序的过程中,我们经常要做的一件事就是获取资源。那么什么是资源呢?说白了,在计算机里那就是一堆数据。只是这堆数据对我们的java程序有多种表现形式,一般来说有File,URL,InputStream等等。而单就文件这一项就有很多种:配置文件,java类文件,jps文件,图片、css、js文件等等。面对这林林总总的资源,我们在设计一个读取资源的接口时,就需要针对不同形式的资源提供方法,这样就导致我们的接口还是与实际的资源形式绑定在一起,未能完全的抽象。另外,在java程序中资源的存放位置也是各异的。有的存放在classpath中,有的存放在文件系统中,有的存放在web应用中。而对于不同位置的资源,java程序获取这些资源的方法各有不同。

A、获取classpath中的资源:

Java代码

URL url = this.getClass().getResource("resource_name");

URL url = this.getClass().getClassLoader().getResource("resource_name");

URL url = Thread.currentThread().getContextClassLoader().getResource("resource_name");

那么在jdk中为什么又提供了三种方式来获取classpath下的资源呢?这其中是有些来头的。

第一行代码中是利用Class类的实例来获取,第二行代码是使用加载当前类的classloader来获取。看下jdk中的源代码会发现class类的实例最后还是委托加载他的classloader来获取资源的。

Java代码

public java.net.URL getResource(String name) {

name = resolveName(name);

ClassLoader cl = getClassLoader0();

if (cl==null) {

// A system class.

return ClassLoader.getSystemResource(name);

}

return cl.getResource(name);

}

从上面的代码中可以看出,对于资源的加载并没有像类加载所采用的双亲委托机制。而是当前类的classloader不为null的情况下先从当前类的classloader中加载资源。而只有当前类的classloader为null的时候才从system classloader中去加载资源。这样可以方便我们自定义配置类覆

相关文档:

java(Web)中相对路径,绝对路径问题总结

前言:

前一段时间,由于在处理Web应用下的文件创建与移动等,因此涉及到很多关于java

中相对路径,绝对路径等问题。同时,对于Web应用中的相对路径,绝对路径,以及Java.io.File

类学习了一下。也找了一些资料。希望大家遇到类似的问题,可以更有效的解决。

========= ......

InputStream stream;

Properties prop = new Properties();// 属性集合对象

stream = getClass().getResourceAsStream("NcJdbc.properties");

prop.load(stream);

stream.close();// 关闭流

String databaseName=prop.getProperty("jdbc.databaseName");

InputStream stream;

Properties prop = new Properties(); ......

typedef struct

{

BYTE    baOrigMDN[8];      /* 主叫用户MDN */

BYTE    baDestMDN[8];      /* 被叫用户MDN */

BYTE    bOrigIsVIP; &nbsp ......

文件上传方法(一次上传一个文件,多个文件的话,请写循环调用)

Upload.uploadFile(theFile, filePath)

说明:

theFile:类型是FormFile

filePath:action中路径获取方法    this.getServlet().getServletContext().getRealPath("/")

调用此方法返回文件上传后的路径名

上传多个文件时,请设置每个� ......

Java容器类库主要包含两种类型Collection(List,Set,Queue)和Map,它们的区别在于每个槽保存的元素个数,Collection只保存一个,而Map保存键和值。

1.当使用Arrays.asList()时,它会在使用一个final的数组作为底层实现,因此任何设计到更改其长度大小的操作都将抛UnsuportedExceptio异常。

2.final的数组,不能改变大小,� ......

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值