zbb20170604 java file 路径 this.getClass().getResource(String) 路径问题

this.getClass().getResource(String) 路径问题    这里的默认当前路径是该类所在目录; this.getClass() 说明了一切!!

this.getClass().getClassLoader().getResource(String)  这里的路径就是项目的根目录 src/main下的 或者编译好的classes 下的;getClassLoader()说明了一切 ! !

File f=new File(String);//路径问题和上述有点区别   这里默认当前路径是该工程下的第一层 与平时所说的src 在同一层

其实具体所指示的路径可能由于开发工具的相关配置而引起不同,此时可以打印一下f的路径看看

其实很简单:

/images/j.jpg    /a.txt  

有斜杠 表示从 项目 根目录下找  
images/j.jpg
a.txt 

无斜杠表示从当前 执行 文件夹下寻找

难点在于哪里是根目录,哪里是当前文件夹下。。。。。。是编译好的文件噢!!!!! 不一定 是当前编写的代码所在的文件。为什么说不一定呢?

对于maven项目,根目录其实是在target 文件夹下的classes   或 test-classes 

对于maven的web项目其目录结构应如下maven     --src           --main                 --java   (在运行时,其内容会被编译到target的classes下,紧适合放java代码)                         --包A                         --包B                 --resources (在运行时,下面内容会被拷贝的target下,因此放一些资源文件)                         --文件夹C                               --图片X                         --图片J                 --webapp           --test

--target  (运行或编译时候自动生成)           --classes                        --包A                        --包B                        --问价夹C                             --图片X                        --图片J
           --test-classes

如上图:根目录就是指classes/  或test-classes/

test与main下面的文件夹结构类似,都一般包含java、resource等

假如我在main/resources 下面的文件价夹下放置   图片.jpg;通过test/java/中的类能否使用呢?

答案是可以的:   

本人测试结果如下:

首次编译执行test: 

main/resources与 test/resources 内都有要使用的文件,则使用拷贝到test-classes/下的文件
                     main/resources有 test/resources 内没有,则使用拷贝到classes/下的文件

非初次编译运行时:

假如我在第二次运行前删除了test-classes/下的文件 则他会去寻找classes/下的文件                     若都删除则会报错,找不到

   文件同步机制:src ----> target  单向同步

原文地址:https://www.cnblogs.com/super-admin/p/9650306.html

时间: 2025-01-12 06:25:35

zbb20170604 java file 路径 this.getClass().getResource(String) 路径问题的相关文章

this.getClass().getResource(String) 路径问题

其实很简单: /images/j.jpg /a.txt 有斜杠 表示从 项目 根目录下找 images/j.jpg a.txt 无斜杠表示从当前 执行 文件夹下寻找 难点在于哪里是根目录,哪里是当前文件夹下......是编译好的文件噢!!!!! 不一定 是当前编写的代码所在的文件.为什么说不一定呢? 对于maven项目,根目录其实是在target 文件夹下的classes 或 test-classes 对于maven的web项目其目录结构应如下maven --src --main --java

[Java开发之路](18)关于Class.getResource和ClassLoader.getResource的路径问题

Java中取资源时,经常用到Class.getResource和ClassLoader.getResource.昨天老师讲解题目时候,问我们为什么你们都是在文件前家上"/": String path = Resources.class.getResource("/a.txt").getPath(); 注:在Resources文件下创建了a.txt文件 我想我反正是试出来的,不使用"/"不行.为了正式解答心中的疑惑,我们正式来看看Resources

java: 关于从jar中读取资源遇到的问题getClass().getResource(...)

在Java的程序发布中,很多人会选择采用二进制的jar的格式进行发布,怎么样读取Jar里面的资源呢?主要是采用ClassLoader的下面几个方法来实现:public URL getResource(String name):public InputStream getResourceAsStream(String name) public static InputStream getSystemResourceAsStream(String name)public static URL get

JAVA File的创建及相对路径绝对路径

http://blog.sina.com.cn/s/blog_9386f17b0100w2vv.html JAVA File的创建及相对路径绝对路径 (2011-12-09 08:27:56) 转载▼ 标签: 杂谈 分类: 技术 File f = new File("D:/test/mytest.txt");//当执行这句话后在内存的栈空间存在一个f的应用,在堆空间里存在一个mytest.txt对象.注意 这个对象只含有文件的属性(如大小,是否可读,修改时间等),不包含文件的内容,所以

关于Class.getResource和ClassLoader.getResource的路径问题

Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. 转自:http://www.cnblogs.com/yejg1212/p/3270152.html Class.getResource(String path) path不以’/'开头时,默认是从此类所在的包下取资源: path 以’/'开头时,则是从ClassPath根下获取: 什么意思呢?看下面这段代码的输出结果就明白了: package

关于Class.getResource和ClassLoader.getResource的路径问题(转)

参考博客:http://www.cnblogs.com/yejg1212/p/3270152.html Class.getResource(String path) 当path以/开头,如/a/b/c.properties时,查找的路径为: classpath路径:path. 当path不以/开头时,如c.properties,查找的路径为:当前调用类的路径:path. 什么意思呢?看下面这段代码的输出结果就明白了: package testpackage; public class TestM

java File类

今天我要总结一下java File类.这个是一个很重要的类. 首先是我画的思维导图. 还写了一些自己写的代码. /** * Date : 2017/6/24 * Author : Hsj * Description : */ public class Demo { /** * File(pathname)表示文件或文件夹路径 * File(String parent,child); * File(File parent,child); */ @Test public void fun() { /

java File类的常见用法

File类简单用法! [java] view plain copy print? [java] view plain copy print? import java.io.File; import java.io.IOException; public class TestFile { public void createFile(String path){ File file=new File(path); if(!file.exists()){//判断文件是否存在 try { file.cr

Java文件夹操作,判断多级路径是否存在,不存在就创建(包括windows和linux下的路径字符分析)

兼容windows和linux. 分析: 在windows下路径有以下表示方式: (标准)D:\test\1.txt (不标准,参考linux)D:/test/1.txt 然后在java中,尤其使用File对象在操作windows的路径时,非常的不好操作,因为不知道要用多少个斜杠“\”来表示. 斜杠“\”为转义字符(参考:http://www.cnblogs.com/EasonJim/p/6561576.html). 而java的File对象上无论是windows还是linux,输入的路径不管标