背景:读取mcbuild.jar中的资源文件TestMapper.xml。FileCodeBulder是jar包中的一个类文件。同目录下放着TestMapper.xml文件。
一般来说,读取文件有两种方式:
1.getResource 不可以正常使用
URL url = FileCodeBulder.class.getResource("TestMapper.xml");//这里不能写成"/TestMapper.xml"
上面是获取到类文件同目录下TestMapper.xml,如果文件不存在url会为null。
if (url == null) {
System.out.println("TestMapper.xml is not exist!");
return;
}
有趣的是此时url不会null。
String path = url.getPath().replaceAll("%20", " ");
File file = new File(path);//path为 E:/workspace/MIS/IntegManage/WebRoot/WEB-INF/lib/mcbuild.jar!/com/ht/build/TestMapper.xml
System.out.println(file.exists());
//输出为false。这里我想不明白,唯一合理的解估计是 “相对工程,jar包中的文件是不存在的”。
2.getResourceAsStream 可以正常使用
InputStream file = FileCodeBulder.class.getResourceAsStream("TestMapper.xml"); // 这里不能写成"/TestMapper.xml"
byte[] temp = new byte[1024];
String content = "";
int len = 0;
try {
while ((len = file.read(temp)) != -1) {
content += new String(temp, 0, len, "utf-8");
}
file.close();
}
catch (Exception e) {
System.out.println(fileName + " is not exist!");
e.printStackTrace();
}
return content;
在结尾在闲扯一下FileCodeBulder.class.getResource("TestMapper.xml")和FileCodeBulder.class.getClass().getResource("/TestMapper.xml").
前面的是获得跟FileCodeBulder同目录下的TestMapper.xml文件
而后面的是获得工程class目录下的TestMapper.xml。 如:E:/workspace/MIS/IntegManage/WebRoot/WEB-INF/classes/TestMapper.xml。
两者除了得到的路径不一样,输入的参数也有差异。后面的多了“/”.
一般来说,读取文件有两种方式:
1.getResource 不可以正常使用
URL url = FileCodeBulder.class.getResource("TestMapper.xml");//这里不能写成"/TestMapper.xml"
上面是获取到类文件同目录下TestMapper.xml,如果文件不存在url会为null。
if (url == null) {
System.out.println("TestMapper.xml is not exist!");
return;
}
有趣的是此时url不会null。
String path = url.getPath().replaceAll("%20", " ");
File file = new File(path);//path为 E:/workspace/MIS/IntegManage/WebRoot/WEB-INF/lib/mcbuild.jar!/com/ht/build/TestMapper.xml
System.out.println(file.exists());
//输出为false。这里我想不明白,唯一合理的解估计是 “相对工程,jar包中的文件是不存在的”。
2.getResourceAsStream 可以正常使用
InputStream file = FileCodeBulder.class.getResourceAsStream("TestMapper.xml"); // 这里不能写成"/TestMapper.xml"
byte[] temp = new byte[1024];
String content = "";
int len = 0;
try {
while ((len = file.read(temp)) != -1) {
content += new String(temp, 0, len, "utf-8");
}
file.close();
}
catch (Exception e) {
System.out.println(fileName + " is not exist!");
e.printStackTrace();
}
return content;
在结尾在闲扯一下FileCodeBulder.class.getResource("TestMapper.xml")和FileCodeBulder.class.getClass().getResource("/TestMapper.xml").
前面的是获得跟FileCodeBulder同目录下的TestMapper.xml文件
而后面的是获得工程class目录下的TestMapper.xml。 如:E:/workspace/MIS/IntegManage/WebRoot/WEB-INF/classes/TestMapper.xml。
两者除了得到的路径不一样,输入的参数也有差异。后面的多了“/”.
相关推荐
本篇文章将详细探讨Java提供的两种主要方法:`Class.getResource`和`Class.getResourceAsStream`,用于加载类路径下的资源文件。 首先,`Class.getResource`方法返回一个`URL`对象,它表示资源的位置。这个方法接受...
java getResourceAsStream种类,分我所知道的3种情况
2. getResource() 和 getResourceAsStream() 的区别 在读取资源文件时,通常使用 getResource() 或 getResourceAsStream() 方法。两种方法都可以读取资源文件,但是它们的使用场景和返回值不同。 getResource() ...
1. **使用Class.getResource()或Class.getResourceAsStream()** 这两个方法是Java提供用于从类路径中获取资源的关键。`getResource()`返回一个`URL`对象,`getResourceAsStream()`则返回一个`InputStream`,适合于...
- 当使用`Class.getResource`或`Class.getResourceAsStream`时,如果路径不以 `/` 开头,那么查找将从调用该方法的类所在的包开始。 - 当使用`ClassLoader.getResource`或`ClassLoader.getResourceAsStream`时,路径...
当资源文件与`.class`文件位于同一目录下时,可以直接使用类名和资源文件名调用`getResourceAsStream`,例如: ```java me.class.getResourceAsStream("myfile.xml"); ``` 2. **子目录加载** 如果资源位于类的...
- **方法**:类加载器提供了`getResource`和`getResourceAsStream`等方法用于查找和读取资源。 2. **资源文件的路径表示**: - 在jar包内部,资源文件的路径通常是以`/`开头的相对路径表示。例如,如果资源文件...
在静态方法中,可以使用 `Test.class.getResource("").getPath()`,而在非静态方法中,可以使用 `this.getClass().getResource("").getPath()` 或 `Test.class.getResource("").getPath()`。这两个方法都可以获取...
在Java编程中,`getClass().getResourceAsStream()`是一个非常实用的方法,用于从类路径(Classpath)中加载资源,如配置文件、图片、字体等。这个方法返回一个`InputStream`对象,可以通过它读取到资源文件的内容。...
1. 使用`Class.getResource()`和`Class.getResourceAsStream()` - `Class.getResource(String path)`方法返回一个`URL`对象,表示相对于当前类的类路径上的资源的位置。例如,如果你有一个名为`config.properties`...
浅谈web项目读取classpath路径下面的文件 本文主要介绍了web项目读取classpath路径下面的文件,涵盖了两种类型的web项目:普通的web项目和内嵌web容器。普通的web项目使用 Tomcat 容器,特点是压缩包随着容器的启动...
从Java JAR文件包中读取资源是Java...通过合理利用`getResource`和`getResourceAsStream`等方法,结合正确的资源路径和类加载器,可以高效地实现这一目标。理解这些概念对于构建可移植且健壮的Java应用程序至关重要。
- 使用`Class.getResource()`或`Class.getResourceAsStream()`方法: - `getResource()`返回一个`URL`对象,适合处理网络或磁盘上的资源。 - `getResourceAsStream()`返回一个`InputStream`,适用于读取二进制...
Java中getResourceAsStream的用法.md
开发者使用Java的getResource和getResourceAsStream方法来加载这些资源。 总的来说,这个"java模拟QQ,图形化界面版"项目涵盖了Java基础、GUI设计、文件操作、网络编程、多线程以及安全编程等多个方面的知识。对于...
6. 资源管理:如果项目中包含多个资源文件,如图像或字体,Java的getResource和getResourceAsStream方法可以帮助加载这些资源。 7. 响应式设计:考虑到不同的设备可能有不同的屏幕尺寸,一个优秀的壁纸生成器会考虑...
你可以通过`Thread.currentThread().getContextClassLoader().getResource()`或`YourClass.class.getResource()`来获取`URL`对象,然后使用`InputStream`读取资源内容。例如: ```java URL resource = getClass()....
4. **尝试使用Resources类**:自Java 6开始,`java.nio`包下的`Resources`类提供了一种更简洁的方式来获取类路径中的资源,如`Resources.getResource("filename")`。 5. **资源的国际化**:在处理多语言环境时,...
1. **Class.getResource() 和 Class.getResourceAsStream()**:这两个方法允许我们通过类加载器获取到类路径下的资源。例如,`getClass().getResource("/filename.txt")`返回一个URL,`getClass()....