jar 内部文件

wd9053 2010-04-06 11:15:36
为了方便,想将一个程序的类文件和设置文件、结果文件打入一个jar包,可实际运行时发现jar文件不能访问jar包中的文件。
文件结构
./test //包
./set //设置文件
jar -cvfm **.jar manifest.mf ./test ./set
然后通过相对路径用BufferedReader读取设置文件。实际运行时发现,jar文件只会去找与其同级的set文件夹,而不会去找jar内部的set文件夹。
求教该如何设置,而且为什么jar文件能够读取内部的包和META-INF文件夹,但不能读取内部的set文件夹?
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
没看懂,一般用 ClassLoader.getSystemResourceAsStream() 来输入流的
wd9053 2010-04-06
  • 打赏
  • 举报
回复
额,manifest文件应该是:
Main-Class: work/Test
Manifest-Version: 1.0
wd9053 2010-04-06
  • 打赏
  • 举报
回复
./work 存放.class文件
./set 存放设置文件
./manifest.mf内容:
Main-Class: wd/MainFrame
Manifest-Version: 1.0

运行命令 jar -cvfm Test.jar manifest.mf ./work ./set
要读取./set/1.set文件并打印行数。
编译后发现在当前位置运行Test.jar能正常读取,但Test.jar移动其他目录中时不能正常读取,即jar读取的不是文件内部的set/1.set,简单代码如下:

package work;

import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.HashSet;

public class Test
{
public static final File root = new File("./set");
public static final File wordFile = new File(root, "1.set");
private static String[] word = load(wordFile);

public static String[] load(File aim)
{
ArrayList<String> result = new ArrayList<String>();
String temp;
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader(aim));
while((temp = br.readLine()) != null)
{
result.add(temp);
}
br.close();
String[] sArray = new String[result.size()];
sArray = result.toArray(sArray);
//System.out.println(sArray.length);
return sArray;
}
catch(Exception ex)
{
ex.printStackTrace();
return new String[0];
}
}
}
huangyangweiyue 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]

读取文件的代码呢?
[/Quote]

你确定路径正确?有没有异常。一并发出来。。
  • 打赏
  • 举报
回复
读取文件的代码呢?

62,584

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧