注意两点:

1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中。

2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取。

例子

新建一个 maven 目录

App.java 用于读取 resources 中的 a.txt 内容。

a.txt 是被读取的资源文件。

grs@grs App $ tree

.

├── pom.xml

├── src

│   ├── main

│   │   ├── java

│   │   │   └── tony

│   │   │   └── App

│   │   │   └── App.java

│   │   └── resources

│   │   └── a.txt

把资源目录添加到 build path 中

项目右击 -> properties -> Java Build Path -> Source -> 把 resources 目录添加到 build path 中。

如果没有添加到 build path 中,导出为一个 Runnable JAR 文件后,运行会报错 Exception in thread "main" java.lang.NullPointerException,解压 jar 后会发现,a.txt 文件没有存在于 jar 文件中。

把 resources 加入到 build path ,使得 resources 目录的文件被包含在 jar 的内部首层路径中。解压 jar ,目录结构如下:

grs@grs app.jar $ tree

.

├── META-INF

│   └── MANIFEST.MF

├── a.txt

└── tony

└── App

└── App.class

代码实现

将 resources 目录设置为 build path 后, a.txt 文件被拷贝到 jar 的首层,所以采用 /a.txt 路径读取。采用 stream 方式读取,确保能读到打包成 jar 内部资源的文件。

packagetony.App;importjava.io.IOException;importjava.io.InputStream;public classApp

{public static void main( String[] args ) throwsException

{

System.out.println("Hello World! --- ");

App app= newApp();

app.readResources();

}public void readResources() throwsIOException{

InputStream is= this.getClass().getResourceAsStream("/a.txt");

System.out.println((char)is.read());

is.close();

}

}

java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件相关推荐

  1. python 从PDF文件中读取书签/目录

    python 从PDF文件中读取书签/目录 代码介绍 需要使用到的函数 代码部分 有时候需要将PDF文件中的书签读取出来进行处理,因此写这篇博客记录具体的处理过程(某些pdf文件会出现打不开报错的情况 ...

  2. POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表

    POI 简介: POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能. ...

  3. java读取同包文件_Java实现从jar包中读取指定文件的方法

    本文实例讲述了Java实现从jar包中读取指定文件的方法.分享给大家供大家参考,具体如下: 以下的Java代码实现了从一个jar包中读取指定文件的功能: /** * This class implem ...

  4. C++:从json文件中读取参数/创建文件夹/位拼接

    目录 1.从json文件中读取参数 2.创建文件夹 3.位运算拼接 1.从json文件中读取参数 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml ...

  5. wxWidgets:从文件中读取文本

    wxWidgets:从文件中读取文本 wxWidgets:从文件中读取文本 一个小代码片段,展示了如何从文件中读取文本 另一种方式,使用流媒体(对于更大的文件): 一个如何编写文本文件的小例子 wxW ...

  6. java文件名特殊字符_如果拒绝打开文件名中带有特殊字符的文件,如何修复Java?...

    如何打开Java拒绝打开的带有特殊字符的文件? 在一开始,我想这是字符集编码问题,因为我从日志文件中读取了错误的文件名.但是后来我发现,这可能是JVM的错误,我需要一种解决方法. 真实的例子胜于言语 ...

  7. java 更改excel文件名称_根据Excel文件中的内容,修改指定文件夹下的文件名称

    问题:根据Excel文件中内容,把文件名称由第2列,改为第1列.比如:把文件"123.jpg"修改为"1.jpg". aaarticlea/png;base64 ...

  8. java+读取source资源_如何从JavaJAR文件中读取资源文件?

    如何从JavaJAR文件中读取资源文件? 我试图从一个单独的JAR文件中访问一个XML文件,这个JAR是作为桌面应用程序运行的.我可以获得我需要的文件的URL,但是当我将它传递给FileReader( ...

  9. 使用Java中的FileChannel和ByteBuffer在文件中读取/写入文件

    过去,我讨论过RandomAccessFile以及如何将其用于在Java中进行更快的IO,在本Java NIO教程中,我们将了解如何通过使用FileChannel和ByteBuffer来使用读/写数据 ...

最新文章

  1. Android Studio2.2.3 通过JNI引用ffmpeg库小结
  2. sap 事务代码跳过权限检查
  3. Vue钩子函数mounted实现进入页面立即查询的功能案例
  4. java网络通信:异步非阻塞I/O (NIO)
  5. FFmpeg深度学习模块的历史、现状和计划
  6. OnClickListener冲突的问题
  7. Python版——博客网站四 编写日志创建页
  8. centos7下python3与python2共存并且开启py3虚拟环境
  9. zendstudio快捷键收录
  10. 华硕ROG5电竞手机跑分数据曝光:骁龙888+16G超大运存
  11. list选取多个元素 python_python基础篇:list列表的操作大盘点
  12. 最小公倍数 [最小公约数的拓展]
  13. 【转】12 TOP Command Examples in Linux
  14. YALMIP学习(一):入门
  15. 安装imageAI:
  16. 乐嘉写给15岁的女儿的信
  17. POJ 3684 Physics Experiment(弹性碰撞)
  18. 13个搭讪绝招助你告别单身
  19. 实体机跑gtest单体测试,Linux平台代码覆盖率测试
  20. Zeppelin Job monitor打开

热门文章

  1. BZOJ 2150: 部落战争 最大流
  2. 10天学安卓-第二天
  3. dm365工作笔记20130731
  4. AIX操作命令记录中
  5. 【计算机网络复习 数据链路层】3.5.2 ALOHA协议
  6. Js拼接嵌套php代码,分享一个js文件中嵌套php会出错的问题
  7. java 随机生成图,Java中的快速实值随机生成器
  8. 计算机二级vf上机试题,计算机二级VF上机模拟题
  9. java的比较运算符是_Java 基础(比较运算符,逻辑运算符,三元运算符)
  10. 日志 note_深入源码解析日志框架Log4j2(二)