Java 读取my.jar中的文本文件
假设我正在制作一个程序,需要在.jar文件中复制.txt文件中的所有行。它位于包Java 读取my.jar中的文本文件,java,io,inputstream,bufferedreader,Java,Io,Inputstream,Bufferedreader,假设我正在制作一个程序,需要在.jar文件中复制.txt文件中的所有行。它位于包program.files中,名为text.txt。我在网上到处找,找不到我要找的东西。我认为这个想法: public String readSpecificFromJar(String dir, int line) { String read = null; try { InputStream in = getClass().getResourceAsStream(dir);
program.files
中,名为text.txt。我在网上到处找,找不到我要找的东西。我认为这个想法:
public String readSpecificFromJar(String dir, int line) {
String read = null;
try {
InputStream in = getClass().getResourceAsStream(dir);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(in));
/**
* declare string variable and prime the read
*/
read = bufferedReader.readLine();
for (int i = 1; i < line; i++) {
read = bufferedReader.readLine();
}
bufferedReader.close();
} catch (IOException ioexception) {
Dialogs.fail("Could not read txt file from the JAR!!! Error Code: 06");
}
return read;
}
publicstringreadspecificfromjar(stringdir,int行){
字符串读取=null;
试一试{
InputStream in=getClass().getResourceAsStream(目录);
BufferedReader BufferedReader=新的BufferedReader(
新的InputStreamReader(in);
/**
*声明字符串变量并初始化读取
*/
read=bufferedReader.readLine();
对于(int i=1;i
会有用的,但我试过了,它给了我各种各样的错误。我认为问题在于以它希望文件与Main方法在那里的方式声明InputStream。我将如何改变这一点,使它不是这样?提前谢谢
编辑:
由于有些混乱,我想澄清一下。对于字符串dir
我输入files/text.txt
。这行不通。我该如何解决这个问题
编辑2:
好吧,我觉得问题没有得到解决,我有点恼火,主要是因为我很累。适用于不同程序的代码在上面,其中的dir
只是“text.txt”
这对我正在做的事情不起作用,我不知道为什么。同样,该文件位于类路径中,因此dir
仅为“text.txt”
。我希望我的.txt文件是“files/text.txt”
。我该怎么做
编辑3:
我不知道我是否提到过它,但我的.txt文件在我的jar中。只是为了澄清混乱。因此,实际上,.jar文件的路径并不重要,因为我不必用dir
键入它。此外,主类位于包main
中,而.txt文件位于包files
中,所有这些文件都位于名为copy
的同一程序中。此外,我尝试将txt文件移动到与main
类相同的包中,但也没有成功
编辑4:
顺便说一下,保存从jar读取方法的包是IO
。在类中,io
位于包io
内。我的所有文件(如图像和txt)都在包文件中。我只是想把它弄清楚。我尝试将txt文件移动到io
类的包中,这是可行的,但是如果它在任何其他包中,即使我在dir
中包含包名,它也不会起作用。想知道为什么吗?这个.txt
文件应该在dir的根目录中与类文件所在的目录相同。
编辑:由于一些混乱,我想澄清一下。对于字符串
dir我正在输入文件/text.txt。这行不通。我该如何解决这个问题
该类的路径是什么?(包含readSpecificFromJar()的类)如果.class
文件和.txt
文件都在同一个目录中,则应如下所示:
dir = "text.txt";
编辑4:顺便说一下,保存从中读取的方法的包
这个罐子是木卫一。在类中,io位于包io中。我所有的
包文件中包含图像和txt等文件。我还以为我
把它弄清楚。我尝试将txt文件移动到io的包中
类,这很有效,但如果它在任何其他包中,即使我
将包名包含在目录中,它将不起作用。你知道为什么吗
试试这个:
dir = "../files/text.txt";
如果您的结构如下,我相信这会起作用:
javaApp.jar
|
_____|_____
| |
files IO
| |
| |
text.txt io.class
.txt
文件应位于dir的根目录中与类文件所在的目录相同。
编辑:由于一些混乱,我想澄清一下。对于字符串
dir我正在输入文件/text.txt。这行不通。我该如何解决这个问题
该类的路径是什么?(包含readSpecificFromJar()的类)如果.class
文件和.txt
文件都在同一个目录中,则应如下所示:
dir = "text.txt";
编辑4:顺便说一下,保存从中读取的方法的包
这个罐子是木卫一。在类中,io位于包io中。我所有的
包文件中包含图像和txt等文件。我还以为我
把它弄清楚。我尝试将txt文件移动到io的包中
类,这很有效,但如果它在任何其他包中,即使我
将包名包含在目录中,它将不起作用。你知道为什么吗
试试这个:
dir = "../files/text.txt";
如果您的结构如下,我相信这会起作用:
javaApp.jar
|
_____|_____
| |
files IO
| |
| |
text.txt io.class
.txt文件需要位于类路径中。您的JAR文件有清单吗?应该这样。将.txt文件的路径添加到类路径中,它应该可以正常工作。最好添加text.txt的字符编码,例如newInputStreamReader(在“Windows-1252”中)
。所以在其他操作系统和国家,一切都很顺利readLine()
在文件末尾生成null,否则将生成不带行尾的行。因此,请执行以下操作:read+=br.readLine()+“\n”代码>左右。尝试将“program/files/text.txt”作为“dir”传递,因为这是软件包名称好主意,但它不起作用:(您是否尝试将dir设置为像“/program/files/test.txt”这样的绝对值?txt文件需要在类路径中。您的JAR文件有清单吗?应该有。将.txt文件的路径添加到类路径中,它应该可以正常工作。最好添加text.txt的字符编码,例如新的InputStreamReader(在“Windows-1252”中)