这里分为具体两种:
第一种:资源文件为一般后缀文件
第二种:资源文件为图片文件
【NO1】第一种
使用这行代码可以获取class类的根目录的路径
String path =Thread.currentThread().getContextClassLoader().getResource("").getPath();
例子:我用的开发软件MyEclipse 6.5
假设项目文件夹如下:
files———bin——core(生成class包)
| | |——Main.class(生成的class文件)
| |
| |——resource( 生成资源文件夹)
| |——a.bat
| |——b.png
|———src——core(源包)
| |—— Main.java(源代码)
|
|——resource(源资源文件夹)
|——a.bat
|——b.png
//源代码Main.java
//============================================================
package core;
import java.io.File;
public class Main {
public static void main(String[] args){
try{
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath(); //添加
File af=new File(path+"/resource");
if(!af.exists()) System.out.println("nullEXIST");;
String[] files =af.list();
if(files.length==0) System.out.println("nullLENGTH");;
for(int i=0;i<files.length;i++){
if(files[i]!=null)System.out.println(files[i]);
else System.out.println("null");
}
}
catch(Exception e){
System.out.println("HugeERROR");
}
}
}
// ===============================================================
运行结果:
a.bat
b.png
就对了
【NO2】第二种
建议使用下面( 2 )方法,因为(1)jar之后可能出现找不到的问题 (之前我试过出现这种情况)
这里代码省了
(1)、你将所有资源打包为epm.jar,你的类位于一个包中:package core;你的图片资源全部放在images文件夹中,而images文件夹也位于core包内。这样的话,最终的路径表现为:
epm———bin——core(生成class包)
| | |——Main.class(生成的class文件)
| |
| |——images( 生成资源文件夹)
| |——system.bat
| |——background.png
|———src——core(源包)
| |—— Main.java(源代码)
|
|——images(源资源文件夹)
|——system.bat
|——background.png
可以通过相对路径来访问:
java.net.URL imUrl = getClass().getResource("images/background.png");
ImageIcon im = new ImageIcon(imUrl);
(2)、另一种情况,如果你的类有很多,并且包的结构很复杂,应该把图片放到最外层,让所有的类通过绝对路径来访问该图片
epm———bin——core(生成class包)
| | |——Main.class(生成的class文件)
| |
| |——images( 生成资源文件夹)
| |——system.bat
| |——background.png
|———src——core(源包)
| |—— Main.java(源代码)
|
|——images(源资源文件夹)
|——system.bat
|——background.png
java.net.URL imUrl = getClass().getResource("/images/background.png");
ImageIcon im = new ImageIcon(imgUrl);
区别非常细微,仅仅是在“images”的前面加了一个反斜杠"/",这个反斜杠就表示根目录,没有反斜杠就表示相对路径。
转载收藏,原文地址http://www.blogjava.net/wangbing/archive/2010/06/01/322501.html
分享到:
相关推荐
在Java编程中,有时我们需要从已经打包的JAR文件中读取特定的资源文件,例如配置文件、图片或库。本篇文章将详细讲解如何在Java中实现从JAR包中读取指定文件的方法。 首先,Java提供了`java.util.jar`包,其中包含...
本资源包聚焦于这个主题,包含了一系列jar包以及两个.java示例文件,帮助我们深入理解如何在Java环境中读取和解析Excel内容。 首先,让我们了解一下核心的jar包。这些jar包通常包含了用于操作Excel文件的API,例如...
利用swt中的一个获取图片的类SwingResourceManager 来解决将程序打为使用java打包之后,生成的jar包中图片找不着的。这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成...
在Java编程中,读取jar包内的文件是一个常见的需求,特别是在运行时动态加载资源或类文件时。Java提供了一种内置的方式,通过`java.util.jar`包中的`JarFile`和`JarInputStream`类来实现这个功能。下面将详细介绍...
在Java开发中,有时我们需要在运行时访问或者操作WAR(Web Application Archive)包或JAR(Java Archive)包内的文件。这些文件可能包括配置文件、静态资源、类文件等。标题"读取war包或jar包内的文件"涉及到的知识...
总结来说,打包Eclipse项目为JAR并处理外部JAR包和配置文件的关键步骤包括: 1. 使用Eclipse的`Runnable JAR file`导出功能。 2. 选择合适的库处理方式,通常推荐`Package required libraries into generated JAR`。...
在Java编程中,有时我们需要在运行时从JAR(Java Archive)包中读取文件,例如类、配置或资源文件。这个任务对于那些希望在不将文件解压到硬盘上的情况下使用它们的开发者来说是非常重要的。本文将详细介绍如何在...
1. 获取jar文件路径:可以通过System.getProperty("java.class.path")获取当前项目的classpath,然后split以分隔jar文件路径。 2. 读取jar文件:使用java.util.jar.JarFile和java.util.jar.JarEntry读取jar文件中的...
例如,通过`this.getClass().getResource()`方法可以获取资源文件的路径。 ##### 示例代码: ```java File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f.getAbsolutePath()); ...
Java通用jar包是一种在Java开发中广泛使用的可重用代码库,它包含了预编译的类和资源,便于开发者在自己的项目中导入和使用。jar(Java Archive)是Java平台的标准打包格式,允许将多个Java类文件和其他资源文件集合...
"Java获取视频时间JAR包"正是为了解决这个问题而设计的,它提供了一个Java库,允许开发者通过简单的API调用来获取视频文件的时长。下面将详细介绍这个JAR包的用途、工作原理以及如何在Java项目中使用它。 首先,让...
总结来说,"EXCELJAVA读取JAR包"这个主题实际上是指如何在Java项目中使用Apache POI库从JAR文件中读取Excel数据。通过理解Excel文件结构、导入和使用Apache POI库,以及编写Java代码来读取和处理数据,开发者可以...
这个"java-http请求jar包"实际上就是Apache HttpClient的4.5.5版本,一个包含了所有必要组件的压缩文件。 Apache HttpClient库提供了对HTTP协议的全面支持,包括GET、POST、PUT等各种HTTP方法,以及Cookie管理、...
标题"Java读取DBF文件jar包和测试用例"表明我们要讨论的是一个Java库,它专门用于读取DBF文件,并且已经包含了测试代码来验证其功能。这个jar包名为"javadbf-0.4.0.jar",这可能是一个第三方库,它提供了Java API来...
当项目被打成jar包后,有时可能会遇到下载这些资源文件时返回空或者找不到的情况。这个问题通常与Spring Boot的打包机制和文件访问路径有关。下面我们将详细探讨这个问题,并提供解决方案。 1. **Spring Boot的资源...
在Java中实现Oracle数据库连接,我们需要用到特定的JAR包,这些JAR包通常包含在Oracle的数据库客户端或者Oracle JDBC驱动程序中。 首先,Oracle JDBC驱动分为两种类型: Thin驱动和 Thick驱动。Thin驱动是一种纯...
你需要创建一个`JarFile`对象,指定JAR文件的路径,然后通过调用`getEntries()`方法获取所有条目,或者通过`getEntry(String name)`获取特定条目。 2. **读取JAR内的资源文件**: - `JarInputStream`:如果你知道...
在这个场景下,"Java获取ipa、apk文件配置信息jar包"提供了这样的功能,它是一个Java库,能够帮助开发者以编程方式解析ipa和apk文件,提取出关键的元数据。 首先,我们要理解如何在Java中处理ipa和apk文件。ipa文件...
Java开发过程中,jar(Java Archive)包是必不可少的组件,它们包含了预编译的类、资源文件以及元数据,使得开发者能够将多个类文件整合到一个单一的可部署单元中。以下是对标题和描述中涉及的几个关键jar包及其功能...