java 获取方法,获取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的数组,不能改变大小,� ......

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39781783/article/details/116037222

智能推荐

VB.NET的拖放操作_vb.net form1.allowdrop-程序员宅基地

文章浏览阅读413次。如代码. 暂时还没改成类的写法.Public Class Form1 Private Sub Init_DragDrop() Me.AllowDrop = True AddHandler Me.DragEnter, AddressOf Obj_DragEnter AddHandler Me.DragDrop, AddressO_vb.net form1.allowdrop

vue eslint报错:Component name “index“ should always be multi-word.eslintvue/multi-word-component-names_"component name \"index\" should always be multi-w-程序员宅基地

文章浏览阅读2.3w次,点赞31次,收藏81次。Component name "index" should always be multi-word.eslintvue/multi-word-component-names_"component name \"index\" should always be multi-word"

页面跳转的两种实现方式:重定向与转发_重定向跳转-程序员宅基地

文章浏览阅读7.9k次,点赞6次,收藏15次。1、重定向客户端向服务器端发送一个请求servlet1,服务器端接收servlet1,servlet1执行完后调用了sendRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个servlet2请求,客户端收到这个请求后,立刻发出一个新的请求,去请求servlet2。此处两个请求一前一后,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。(服务器向._重定向跳转

xftp7要继续使用此程序,您必须应用最新的更新,100%已解决._xftp7 要继续使用此程序 您必须应用最新的-程序员宅基地

文章浏览阅读1.9w次,点赞42次,收藏56次。xftp7要继续使用此程序,您必须应用最新的更新,100%已解决.xshell7要继续使用此程序,您必须应用最新的更新,100%已解决._xftp7 要继续使用此程序 您必须应用最新的

有效解决SecureCRT错误:Hostname lookup failed: host not found-程序员宅基地

文章浏览阅读3w次,点赞7次,收藏12次。SecureCRT是一款方便用户在Windows环境下对Linux主机进行管理的软件,一般需要在windows系统上安装SecureCRT客户端,安装及破解过程可参考https://blog.csdn.net/xxujia/article/details/81348848(注意在运行注册机时应使用管理员权限)。相应地,在Linux主机上需要安装ssh2服务,在终端中输入命令:sudo apt-g..._hostname lookup failed: host not found

C#与雷赛运动控制卡的使用(二) - 轴控制系统_c# 运动控制卡编程-程序员宅基地

文章浏览阅读1.3k次,点赞29次,收藏9次。C#是一门面向对象的编程语言,所以在编写马达控制程序的时候也要有面向对象的思维,所以在此我们可以将马达看成是一类对象,而机台上的每个马达就是这个马达类的具体对象。一个简单的类大致包括了字段,属性和方法,需要创建一个马达类,首先得知道马达具备哪些基本的属性,而我们使用马达来实现哪些功能,怎么控制这个马达,就是一些方法。去年写过一篇关于C#实现马达运动控制卡编程的博客,很多小伙伴看了希望共享下代码,后来自己觉得写得不够完善就删掉了,这次准备重新写一篇完善点的,实现代码后续也会上传资源,觉得有用的可以去下载。_c# 运动控制卡编程

随便推点

50M/s, Onedrive直链提取-IDM实现满速下载-程序员宅基地

文章浏览阅读4.8w次,点赞9次,收藏30次。50M/s, Onedrive直链提取+IDM实现满速下载博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议本文永久链接是:https://blog.nxingcloud.co/posts/a3ad802e.htmlOneDrive虽然嫖到了5T但是速度慢到极致是不是很不甘心,心里发痒?别急!OneDrive的真正实力远超你想象!今天,我就来教大家如何用oneindex+IDM让你的OneDrive下载速度爆表。话不多说,正文开整!!!国内网盘现状_onedrive直链

【ROS-数据格式理解】PointCloud2格式理解fields-程序员宅基地

文章浏览阅读1.4w次,点赞10次,收藏38次。【ROS-数据格式理解】PointCloud2格式理解 1、PointCloud2消息格式2、PointCloud2 消息格式例子3、理解其中的fields1、PointCloud2消息格式具体官方数据http://docs.ros.org/en/jade/api/sensor_msgs/html/msg/PointCloud2.html在ros中查看如下:std_msgs/Header header uint32 seq time stamp string frame_iduint3_pointcloud2

php 文章浏览数_重复计数,php+mysql文章浏览次数统计及发布时间-程序员宅基地

文章浏览阅读85次。session_start();$stsfile = "10001.php";$nowtime = time();date_default_timezone_set("Asia/Chongqing");//设置时间标准If (!isset($_SESSION['article']) || $_SESSION['article'] != $stsfile ) //判断用户是否在线{$link = m..._php+myqsl文章阅读量代码

图像噪声与去噪-程序员宅基地

文章浏览阅读3.4w次,点赞17次,收藏139次。图像的空域噪声以及二维降噪算法介绍1图像噪声的成因  图像在生成和传输过程中常常因受到各种噪声的干扰和影响而是图像降质,这对后续图像的处理和图像视觉效应将产生不利影响。噪声种类很多,比如:电噪声,机械噪声,信道噪声和其他噪声。因此,为了抑制噪声,改善图像质量,便于更高层次的处理,必须对图像进行去噪预处理。2图像噪声的特征  图像噪声使得图像模糊,甚至淹没图像特征_图像噪声与去噪

Python Web 之Flask基础(一)_python flask修改了视图函数的函数名-程序员宅基地

文章浏览阅读536次,点赞4次,收藏4次。文章目录Flask 框架基础Flask 搭建创建虚拟环境安装 Flask测试Flask 的基本使用路由视图函数请求与响应请求响应Flask 框架基础Flask 搭建Flask 1.0 文档依赖当安装 Flask 时,以下配套软件会被自动安装。Werkzeug 用于实现 WSGI ,应用和服务之间的标准 Python 接口。Jinja 用于渲染页面的模板语言。MarkupSaf..._python flask修改了视图函数的函数名

学习3d建模达到什么水平能找到工作?次世代游戏建模需要学多久_次时代建模几月找工作合适-程序员宅基地

文章浏览阅读844次。作为从业7年+的游戏建模工作者,我经历过这个圈子里几乎所有类型的挫折和崩溃,过快的技术更迭造成现在游戏美术圈一个普遍的问题:人才出现巨大断层,各高校游戏美术类相关专业应届毕业生基本达不到同时期入行的最低需求,学生们发现自己刚毕业就失业了,这就是为什么你的老师告诉你们毕业也找不到工作的原因。3d建模学多久这个问题不是很好回答,谁才知道你的实力怎么样,努力的态度怎么样,如果你三天打鱼两天晒网,我估计一万年也学不会。如果你全力以赴认真的学,五六个月就能很好的玩转3D建模,当然如果你想达到大神级别的水平,还得在有_次时代建模几月找工作合适