怎样从JAR文件中读取文件?
答案:4 悬赏:80
解决时间 2021-02-22 11:26
- 提问者网友:無理詩人
- 2021-02-22 04:51
怎样从JAR文件中读取文件?
最佳答案
- 二级知识专家网友:你可爱的野爹
- 2021-02-22 06:18
package edu.hxraid;
import java.io.*;
public class Resource {
public void getResource() throws IOException{
//返回读取指定资源的输入流
InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((s=br.readLine())!=null)
System.out.println(s);
}
}
我们将java工程下/bin目录中的edu/hxraid/Resource.class和资源文件resource/res.txt一并打包进ResourceJar.jar中,不管jar包在系统的任何目录下,调用jar包中的Resource类都可以获得jar包中的res.txt资源,再也不会找不到res.txt文件了
import java.io.*;
public class Resource {
public void getResource() throws IOException{
//返回读取指定资源的输入流
InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((s=br.readLine())!=null)
System.out.println(s);
}
}
我们将java工程下/bin目录中的edu/hxraid/Resource.class和资源文件resource/res.txt一并打包进ResourceJar.jar中,不管jar包在系统的任何目录下,调用jar包中的Resource类都可以获得jar包中的res.txt资源,再也不会找不到res.txt文件了
全部回答
- 1楼网友:你可爱的野爹
- 2021-02-22 08:42
package edu.hxraid;
import java.io.*;
public class Resource {
public void getResource() throws IOException{
//返回读取指定资源的输入流
InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((s=br.readLine())!=null)
System.out.println(s);
}
}
我们将java工程下/bin目录中的edu/hxraid/Resource.class和资源文件resource/res.txt一并打包进ResourceJar.jar中,不管jar包在系统的任何目录下,调用jar包中的Resource类都可以获得jar包中的res.txt资源,再也不会找不到res.txt文件了
import java.io.*;
public class Resource {
public void getResource() throws IOException{
//返回读取指定资源的输入流
InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((s=br.readLine())!=null)
System.out.println(s);
}
}
我们将java工程下/bin目录中的edu/hxraid/Resource.class和资源文件resource/res.txt一并打包进ResourceJar.jar中,不管jar包在系统的任何目录下,调用jar包中的Resource类都可以获得jar包中的res.txt资源,再也不会找不到res.txt文件了
- 2楼网友:傲气稳了全场
- 2021-02-22 07:35
jar可以用电脑上的winrar打开,不过里面的文件格式很特殊,没有专门软件是打不开的。
- 3楼网友:思契十里
- 2021-02-22 06:49
进入jar文件其实没有说的那么困难,jar文件本质是一个zip格式的压缩文件,只是把文件后缀名改了,要用Java读取里面的文件也没有那么想象的那么困难。使用相关协议就可以:
例如:c盘根目录有一个test.jar文件文件里面有个a.txt文件我们就读取这个a.txt文件
文件对应的URL:
jar:file:/C:/test.jar!/a.txt
Java代码:
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class TestDouble {
public static void main(String[] args) throws IOException {
URL url=new URL("jar:file:/C:/test.jar!/a.txt");
System.out.println(url);
InputStream is=url.openStream();
byte b[]=new byte[1000];
is.read(b);
System.out.println(new String(b).trim());
}
}
不是很清楚你到底是从直接将jar中文件解压出来还是通过Java将jar文件中的文件复制出来,如果是想直接解压出文件用winrar就可以了,要用Java复制看下面这个测试,基本上和复制文件差不多:
import java.io.*;
import java.net.URL;
public class CopyFile {
public static void copyFormJar(String fileUrl, String dest )
throws IOException
{
int BUFF_SIZE = 100000;
byte[] buffer = new byte[BUFF_SIZE];
InputStream in = null;
OutputStream out = null;
URL url=new URL(fileUrl);
try
{
in = url.openStream();
out = new FileOutputStream( dest );
while ( true )
{
synchronized ( buffer )
{
int amountRead = in.read( buffer );
if ( amountRead == -1 )
{
break;
}
out.write( buffer, 0, amountRead );
}
}
}
finally
{
if ( in != null )
{
in.close();
}
if ( out != null )
{
out.close();
}
}
}
public static void main(String[] args) throws IOException {
args=new String[2];
args[0]="jar:file:/C:/test.jar!/a.txt";
args[1]="c:/test.txt";
CopyFile.copyFormJar(args[0], args[1]);
}
}
例如:c盘根目录有一个test.jar文件文件里面有个a.txt文件我们就读取这个a.txt文件
文件对应的URL:
jar:file:/C:/test.jar!/a.txt
Java代码:
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class TestDouble {
public static void main(String[] args) throws IOException {
URL url=new URL("jar:file:/C:/test.jar!/a.txt");
System.out.println(url);
InputStream is=url.openStream();
byte b[]=new byte[1000];
is.read(b);
System.out.println(new String(b).trim());
}
}
不是很清楚你到底是从直接将jar中文件解压出来还是通过Java将jar文件中的文件复制出来,如果是想直接解压出文件用winrar就可以了,要用Java复制看下面这个测试,基本上和复制文件差不多:
import java.io.*;
import java.net.URL;
public class CopyFile {
public static void copyFormJar(String fileUrl, String dest )
throws IOException
{
int BUFF_SIZE = 100000;
byte[] buffer = new byte[BUFF_SIZE];
InputStream in = null;
OutputStream out = null;
URL url=new URL(fileUrl);
try
{
in = url.openStream();
out = new FileOutputStream( dest );
while ( true )
{
synchronized ( buffer )
{
int amountRead = in.read( buffer );
if ( amountRead == -1 )
{
break;
}
out.write( buffer, 0, amountRead );
}
}
}
finally
{
if ( in != null )
{
in.close();
}
if ( out != null )
{
out.close();
}
}
}
public static void main(String[] args) throws IOException {
args=new String[2];
args[0]="jar:file:/C:/test.jar!/a.txt";
args[1]="c:/test.txt";
CopyFile.copyFormJar(args[0], args[1]);
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯