iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavagetResource()如何获取class文件目录位置
  • 324
分享到

JavagetResource()如何获取class文件目录位置

JavagetResourceclass文件目录位置Java获取class目录位置 2022-12-29 12:12:01 324人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录getResource()获取class文件目录位置总结xxx.class.getResource(“”)xxx.class.getResource(&l

getResource()获取class文件目录位置总结

xxx.class.getResource(“”)

获取class文件所在的具体目录。

// TestGetResource.java
// 当前包名为:com.loc
//获取当前class文件所在位置,以URL形式返回
URL url = getClass().getResource("");
//输出:file:/D:/dev/workspace/AnyTest/bin/com/loc/
System.out.println(url);
//去除file:前缀后剩下的部分:/D:/dev/workspace/AnyTest/bin/com/loc/
System.out.println(url.getPath());

xxx.class.getResource(“/”)

传入的/代表根目录,用于获取class文件的根目录(包名的起点)。

// TestGetResource.java
// 当前包名为:com.loc
//获取class文件根目录位置
url = getClass().getResource("/");
//file:/D:/dev/workspace/AnyTest/bin/
System.out.println(url);
///D:/dev/workspace/AnyTest/bin/
System.out.println(url.getPath());

xxx.class.getProtectionDomain().getCodeSource().getLocation()

1.如果是普通java项目,获取到的是class文件的根目录(包名起点)。

// TestGetResource.java
// 当前包名为:com.loc
//获取class文件根目录位置
URL srcLocation = getClass().getProtectionDomain().getCodeSource().getLocation();
//输出:file:/D:/dev/workspace/AnyTest/bin/
System.out.println(srcLocation);
//输出:/D:/dev/workspace/AnyTest/bin/
System.out.println(srcLocation.getPath());

2.如果是WEB项目,获取到的是class文件的完整路径,包含XXX.class文件名本身。

// TestGetResource.java
// 当前包名为:com.loc
//Web项目下,可用于获取class文件全路径
URL srcLocation = getClass().getProtectionDomain().getCodeSource().getLocation();
//输出:file:/D:/dev/.../WEB-INF/classes/com/loc/TestGetResource.class
System.out.println(srcLocation);
//输出:/D:/dev/.../WEB-INF/classes/com/loc/TestGetResource.class
System.out.println(srcLocation.getPath());

java Class.getResource用法

用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file = new File(“c:/test.txt”);这样用有什么问题,相信大家都知道,就是路径硬编码,对于JAVA精神来说,应用应该一次成型,到处可用,并且从现实应用来讲,最终生成的应用也会部署到windows外的操作系统中,对于linux来说,在应用中用了c:/这样的字样,就是失败,所以,我们应该尽量避免使用硬编码,即直接使用绝对路径。

在Servlet应用中,有一个getRealPath(String str)的方法,这个方法尽管也可以动态地获得文件的路径,不秘直接手写绝对路径,但这也是一个不被建议使用的方法,那么,我们有什么方法可以更好地获得文件呢?

那就是Class.getResource()与Class.getResourceAsStream()方法,但很多人还是不太懂它的用法,因为很多人(比如不久前的我)都不知道应该传怎么样的参数给它,当然,有些人己经用得如火纯青,这些人是不需要照顾的,在此仅给不会或者还不是很熟的人解释一点点。

比如我们有以下目录:

这里写图片描述

在上面的目录中,有一个src目录,这是JAVA源文件的目录,有一个build目录,这是JAVA编译后文件(.class文件等)的存放目录

那么,我们在Test类中应该如何分别获得

file1.txt file2.txt file3.txt file4.txt这四个文件呢?

首先讲file3.txt与file4.txt:

file3.txt

方法一:File file3 = new File(Test.class.getResource(“file3.txt”).getFile());

方法二:File file3 = new File(Test.class.getResource(“/javaapplication/file3.txt”).getFile());

方法三:File file3 = new File(Test.class.getClassLoader().getResource(“javaapplication/file3.txt”).getFile());

file4.txt

方法一:File file4 = new File(Test.class.getResource(“/file4.txt”).getFile());

方法二:File file4 = new File(Test.class.getClassLoader().getResource(“file4.txt”).getFile());

很好,我们可以有多种方法选择,但是file1与file2文件呢?如何获得?

答案是,你只能写上它们的绝对路径,不能像file3与file4一样用class.getResource()这种方法获得,它们的获取方法如下

假如整个project目录放在c:/下,那么file1与file2的获取方法分别为

file1.txt

方法一:File file1 = new File(“c:/project/src/javaapplication/file1.txt”);

方法二:。。。没有

file2.txt

方法一:File file2 = new File(“c:/project/src/file2.txt”);

方法二:。。。也没有

总结一下,就是你想获得文件,你得从最终生成的.class文件为着手点,不要以.java文件的路径为出发点,因为真正使用的就是.class,不会拿个.java文件就使用,因为java是编译型语言嘛

至于getResouce()方法的参数,你以class为出发点,再结合相对路径的概念,就可以准确地定位资源文件了,至于它的根目录嘛,你用不同的IDE build出来是不同的位置下的,不过都是以顶层package作为根目录,比如在Web应用中,有一个WEB-INF的目录,WEB-INF目录里面除了web.xml文件外,还有一个classes目录,没错了,它就是你这个WEB应用的package的顶层目录,也是所有.class的根目录“/”,假如clasaes目录下面有一个file.txt文件,它的相对路径就是”/file.txt”,如果相对路径不是以”/”开头,那么它就是相对于.class的路径。。

还有一个getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,再new InputStream(file)一样的结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: JavagetResource()如何获取class文件目录位置

本文链接: https://www.lsjlt.com/news/176183.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavagetResource()如何获取class文件目录位置
    目录getResource()获取class文件目录位置总结xxx.class.getResource(“”)xxx.class.getResource(&l...
    99+
    2022-12-29
    Java getResource class文件目录位置 Java获取class目录位置
  • Java getResource()怎么获取class文件目录位置
    今天小编给大家分享一下Java getResource()怎么获取class文件目录位置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2023-07-04
  • windows如何获取目录下的文件名
    Windows可以使用以下方法来获取目录下的文件名:1. 使用命令行工具:在命令提示符窗口中,使用`dir`命令可以列出当前目录下的...
    99+
    2023-09-28
    windows
  • shell script如何获取文件名或目录名称
    本文小编为大家详细介绍“shell script如何获取文件名或目录名称”,内容详细,步骤清晰,细节处理妥当,希望这篇“shell script如何获取文件名或目录名称”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-02
  • VBS如何获取指定目录下的文件列表
    这篇文章主要介绍VBS如何获取指定目录下的文件列表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!VBS肿么获取某目录下的文件列表dim FileName,fs,foldernamefoldername&nb...
    99+
    2023-06-08
  • 如何使用Bash Shell获取文件名和目录名
    这篇文章主要讲解了“如何使用Bash Shell获取文件名和目录名”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Bash Shell获取文件名和目录名”吧!前言还是今天再写一个自动化...
    99+
    2023-06-09
  • shell如何获取打开文件数目
    小编给大家分享一下shell如何获取打开文件数目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 打开文件数目lsofs...
    99+
    2022-10-19
  • maven工程如何读取resource目录下配置文件
    目录maven工程读取resource目录下配置文件maven配置resource,多个source目录maven工程读取resource目录下配置文件 在maven工程中,我们会将...
    99+
    2022-11-12
  • Python 如何获取目录下的文件列表,并自然排序
    在实际的算法与程序开发中,经常需要面对的场景就是对同一目录内的文件进行批量操作。 并且很多时候目录中的文件明明是有规律的,同时希望程序在进行处理时也是按照一定的顺序进行。 方法 1 >>> im...
    99+
    2022-06-02
    Python 获取目录 文件列表 自然排序
  • linux Shell如何获取某目录下所有文件夹的名称
    这篇文章主要为大家展示了“linux Shell如何获取某目录下所有文件夹的名称”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux Shell如何获取某目录下所有文件夹的名称”这篇文章吧。...
    99+
    2023-06-09
  • 如何使用springboot配置和占位符获取配置文件中的值
    小编给大家分享一下如何使用springboot配置和占位符获取配置文件中的值,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!springboot配置和占位符获取配置文件值@PropertySource& 加载指定的配...
    99+
    2023-06-29
  • GO语言API开发:如何获取文件路径中的目录名?
    在进行编程开发的过程中,经常需要对文件路径进行操作。而获取文件路径中的目录名是其中一项非常常见的操作,这种操作在GO语言中也是非常容易实现的。本文将介绍如何使用GO语言API获取文件路径中的目录名。 使用path包中的Dir函数 GO...
    99+
    2023-11-13
    api 文件 path
  • 详解C/C++如何获取路径下所有文件及其子目录的文件名
    目录一、功能描述二、实现方式三、代码实现一、功能描述 需要提取某个文件夹下所有文件名字,当包含子目录时,将子目录及其路径获取到。 二、实现方式 使用C语言的opendir函数 D...
    99+
    2023-03-14
    C++获取路径下文件文件名 C++获取文件文件名 C++获取文件名
  • 如何用BAT实时读取某个文件目录下文件数
    这篇文章主要讲解了“如何用BAT实时读取某个文件目录下文件数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用BAT实时读取某个文件目录下文件数”吧!最近帮助一个朋友制作一个简单的课件展示...
    99+
    2023-06-08
  • Android开发如何读取assets目录下db文件
    这篇文章主要为大家展示了“Android开发如何读取assets目录下db文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android开发如何读取assets目录下db文件”这篇文章吧。具体...
    99+
    2023-05-30
    android assets db
  • SpringBoot如何读取资源目录中的JSON文件
    这篇“SpringBoot如何读取资源目录中的JSON文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot...
    99+
    2023-07-06
  • Linux shellh中如何提取文件名和目录名
    这篇文章将为大家详细讲解有关Linux shellh中如何提取文件名和目录名,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的...
    99+
    2023-06-09
  • Python代码集pathlib应用之如何获取指定目录下的所有文件
    (1)如下代码,默认递归获取指定目录root_dir下的所有文件,当指定recursive参数为False时,则只获取root_dir目录下的所有文件,不会递归的查找,若指定suffix_tuple参数,则可以获取root_dir目录下的指...
    99+
    2023-05-14
    Python pathlib
  • shell如何获取目录下所有文件夹的名称并输出的实例
    这篇文章将为大家详细讲解有关shell如何获取目录下所有文件夹的名称并输出的实例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。获取指定目录/usr/下所有文件夹的名称并输出:shell代码:#!/bin/...
    99+
    2023-06-09
  • nodejs如何实现递归拷贝、读取目录下所有文件和目录
    这篇文章将为大家详细讲解有关nodejs如何实现递归拷贝、读取目录下所有文件和目录,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体代码如下所示:var fs=...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作