10.1.3 资源
额外的信息文件被称作资源。
- 图像、声音、视频等多媒体文件
- 消息提示配置文件
- 地图布局文件
使用资源的操作步骤:
- 获得具有资源的类的Class文件 XX.class
- getresource(filename)定义资源的位置
- getResourceAsStream()读取文件中的数据
加载资源:
URL url = ResourceTest.class.getResource("about.gif");
Image img = Toolkit.getDefaultToolkit().getImage(url);
读取文件:
InputStream stream = ResourceTest.class.getResourceAsStream("about.txt");
Scanner in = new Scanner(stream);
示例程序:
示例程序命令:
javac ResourceTest.java
jar cvfm ResourceTest.jar ResourceTest.mf *.class *.gif *.txt
java -jar ResourceTest.jar
import javax.swing.*;
import java.awt.*;
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;
public class ResourceTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ResourceTestFrame frame = new ResourceTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class ResourceTestFrame extends JFrame{
public static final int W = 300;
public static final int H = 300;
public ResourceTestFrame(){
setTitle("ResourceTest");
setSize(W,H);
//动图不行,显示不出不报错
//使用 getClass() 不行,要用 ResourceTestFrame.class
// System.out.println(ResourceTestFrame.class.getResource("about.gif"));
URL aboutURL = ResourceTestFrame.class.getResource("tt.png");
Image img = Toolkit.getDefaultToolkit().getImage(aboutURL);
// setIconImage(new ImageIcon("./leetcode/editor/cn/com/book/tt.png").getImage());
setIconImage(img);
JTextArea textArea = new JTextArea();
InputStream stream = getClass().getResourceAsStream("about.txt");
Scanner in = new Scanner(stream);
while(in.hasNext()){
textArea.append(in.nextLine()+"\n");
add(textArea);
}
}
}
调试小坑介绍:
- Gif 图加载失败(可能不用动图可以,动图失败)
- getClass().getResource 失败,要用 ResourceTestFrame.class
- 目录在同一文件夹
- java -Dfile.encoding=utf-8 -jar ResourceTest.jar 注意如果不加编码文件读入的文本会乱码
相关内容:选择 《Java核心技术 卷1》查找相关笔记
评论🌹点赞👍收藏✨关注👀,是送给作者最好的礼物,愿我们共同学习,一起进步
公众号 钰娘娘知识汇总