java 相对路径获取 -- getResource的应用

(一)函数:

(1)   Class.getResource(String path)           

    (2)   Class.getClassLoader.getResource(String path)

其中(2)中 path不能以‘/‘开头

(1)中path 开头有无‘/‘ 均可,含义不同

(二)测试目录结构:

|--project

|--src

|--mytest

|--RePathTest.java

|--file1.txt

|--file2.txt

|--bin

|--mytest

|--RePathTest.class

|--file3.txt

|--file4.txt

(三)用法:

(2)中  默认是从ClassPath (即 bin 或 classes路径)下获取

本例中:

File file3 = new File(RePathTest.class.getClassLoader().getResource("mytest/file3.txt").getFile());

File file4 = new File(RePathTest.class.getClassLoader().getResource("file4.txt").getFile());

(1)中

a. 以‘/‘开头,而表示从ClassPath (即 bin 或 classes路径)下获取

本例中:

File file3 = new File(RePathTest.class.getResource("/mytest/file3.txt").getFile()); // 从classpath 即 bin下找

b. 不以‘/‘开头,表示相对于 RePathTest.class 的路径

本例中:

File file3 = new File(RePathTest.class.getResource("file3.txt").getFile());  // 从 package mytest 包  找,相对于 .class(此处为  RePathTest.class )文件

(四) getResourceAsStream()   vs  getResouce()

getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,

再new InputStream(file)一样的结果

(五)补充

1. web中以 WEB-INF中classes文件为classpath目录

2. getResource 获取路径与 .class文件夹有关,与 .java文件夹无关

(六)测试

package mytest;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

public class RePathTest {

RePathTest Test = new RePathTest();

public static void main(String[] args) throws FileNotFoundException {

File file3 = new File(RePathTest.class.getResource("file3.txt").getFile());

//File file3 = new File(RePathTest.class.getResource("/mytest/file3.txt").getFile());

//File file3 = new File(RePathTest.class.getClassLoader().getResource("mytest/file3.txt").getFile());

FileReader fr = new FileReader(file3);

BufferedReader br = new BufferedReader(fr);

try {

String line = br.readLine();

while (line != null) {

System.out.print(line);

line = br.readLine();

}

catch (IOException e) {

e.printStackTrace();

}

//File file4 = new File(RePathTest.class.getResource("/file4.txt").getFile());

//File file4 = new File(RePathTest.class.getClassLoader().getResource("file4.txt").getFile());

}

}

参考:

http://blog.163.com/[email protected]/blog/static/1697674882011112045456653/

http://www.cnblogs.com/javayuer/archive/2011/01/02/1924192.html

时间: 2024-07-30 23:13:07

java 相对路径获取 -- getResource的应用的相关文章

Java根据路径获取图片的时候有时候会得不到图片

在保证图片路径正确的情况下,可能是获取图片流的方式不对. 我在用Java.awt.*相关的包调用系统打印机进行打印的时候,会出现打不出图片的情况,这个时候换一种读取图片的方式就可以了. 1 //这种方式会出现偶然丢失图片的情况,有的时候打得出来有的时候打不出来 2 //Image image = ToolKit.getDefaultToolKit().createImage("eg.jpg"); 3 //换成这种方式获取就没问题了 4 Image image = new ImageIc

java web项目获取各种路径

1.可以在servlet的init方法里 String path = getServletContext().getRealPath("/"); 这将获取web项目的全路径 例如 :E:\eclipseM9\workspace\tree\ tree是我web项目的根目录 2.你也可以随时在任意的class里调用 this.getClass().getClassLoader().getResource("/").getPath(); 这将获取 到classes目录的全

Java学习-009-文件名称及路径获取实例及源代码

此文源码主要为应用 Java 获取文件名称及文件目录的源码及其测试源码.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-2-3 00:02:27,请知悉. Java获取文件名称的源代码如下: 1 /** 2 * @function 获取文件名 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java getfname, 201

Java 文件路径的读取

记得在操作系统中了解到文件读取有两种方式,当然这在各编程语言中也是通用的,所以java路径也分,相对和绝对路径. 绝对路径 绝对路径URI ,听着和URL很相似,那我们就来看看吧. URI(Uniformresource Identifier)统一资源标示符.URL统一资源定位符,是一个定位器,还说明了具体如何找到资源.所以他们就有一种抽象和继承的关系.URI抽象的说明了统一资源表示符号,而URL是具体的标识符的方式. 如何使用呢.如我们想获取一个类的具体位置.只要如下方式: 例如:test.c

java getResourcesAsStream()如何获取WEB-INF下的文件流

getResourcesAsStream()来读取.properties文件,但是getResourcesAsStream()仅在java项目时能获取根目录的文件: 在web项目中,getResourcesAsStream()是获取classes目录的根路径 例如:文件在WEB-INF/conf/conf.properties. private Properties readConf(){ InputStream is = null; try{ //获取classes的路径,注意:由于转码的原因

Java相对路径读取文件

不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的. 项目的文件夹结构: repathtest ├─src │    └─com │            └─lavasoft │                    ├─test │                    └─res ├─doc 1.在Java开发工具的project中使用相对路径 在project中,相对路径的根目录是projec

java之路径问题

1.this.class.getClassLoader().getResource("路径").getPath();路径参数不能以“/”开头,获取classes目录下文件的路径 2.this.class.getResource("路径").getPath();路径参数以“/”开头,则在classes目录下找,不以“/”开头则在当前类的包目录下找 3.System.getProperty("user.dir")获取项目的根路径,在web项目中会因为

路径获取

1.项目根目录(tomcat.web项目) String path = ServletActionContext.getServletContext().getRealPath("");System.out.println(path); 想要获取图片存放的位置,则为String path = ServletActionContext.getServletContext().getRealPath("images"); 2.java代码编译后class文件所在的路径(

java web路径和spring读取配置文件

此篇博客缘起:部署java web系统到阿里云服务器(ubuntu14.04)的时候,有以下两个问题 找不到自定义的property配置文件 上传图片的时候找不到路径 开发的时候是在windows上的,运行正常,部署的时候就出问题了,肯定是windows和linux路径区别导致的(一个小问题来回鼓捣了几个小时,因为有自己对windows下和linux下的区别还不是特别了解,还有就是每次在windows下修改完成以后都要重新上传到阿里云,项目较大来回也需要较多时间...),遂决定好好看看java