java jar包中图片路径读取问题

java jar包中图片路径读取问题,第1张

你是用eclipse写的吧,在eclipse中 src包不是一个文件夹,而是代表你的class文件存放的地址,在你这里,src代表的就是Sysjar!这个文件夹,!的没有特殊意思,就只是这个文件夹名字的组成而已,命名规则中不能用“”,“”,“/”命名,!是可以用的

属性文件不要打包 属性文件是为了方便更改配置才单独提取出来的 打包以后编辑多麻烦 除非你是打成war包发布 但是发布到web容器中war包是会被自动解开的。 打包编译过的class文件就可以

testproperties打入testjar

你的意思是属性文件跟class在一个包内么 如果是一个包内直接就可以读取了,前提classpath设置正确。 调用javaio;下的文件读取哪个类就可以读了。

String root = SystemgetProperty("userdir");

String path = root +"\\outtxt";

这个可以得到当前JAR运行时的目录。

进入jar文件其实没有说的那么困难,jar文件本质是一个zip格式的压缩文件,只是把文件后缀名改了,要用Java读取里面的文件也没有那么想象的那么困难。使用相关协议就可以:

例如:c盘根目录有一个testjar文件文件里面有个atxt文件我们就读取这个atxt文件

文件对应的URL:

jar:file:/C:/testjar!/atxt

Java代码:

import javaioIOException;

import javaioInputStream;

import javanetURL;

public class TestDouble {

public static void main(String[] args) throws IOException {

URL url=new URL("jar:file:/C:/testjar!/atxt");

Systemoutprintln(url);

InputStream is=urlopenStream();

byte b[]=new byte[1000];

isread(b);

Systemoutprintln(new String(b)trim());

}

}

不是很清楚你到底是从直接将jar中文件解压出来还是通过Java将jar文件中的文件复制出来,如果是想直接解压出文件用winrar就可以了,要用Java复制看下面这个测试,基本上和复制文件差不多:

import javaio;

import javanetURL;

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 = urlopenStream();

out = new FileOutputStream( dest );

while ( true )

{

synchronized ( buffer )

{

int amountRead = inread( buffer );

if ( amountRead == -1 )

{

break;

}

outwrite( buffer, 0, amountRead );

}

}

}

finally

{

if ( in != null )

{

inclose();

}

if ( out != null )

{

outclose();

}

}

}

public static void main(String[] args) throws IOException {

args=new String[2];

args[0]="jar:file:/C:/testjar!/atxt";

args[1]="c:/testtxt";

CopyFilecopyFormJar(args[0], args[1]);

}

}

在编写代码时使用的是绝对路径来访问的这个文件,然而这个文件是在jar包中的,jar包中有自己的一套Url编址:jar:<url>!/{entry})。所以导致运行时无法访问到文件。

解决办法就是在构造File对象时使用url来构造,而文件的url获取使用ClassLoader

URL fileURL=thisgetClass()getResource("0txt");

File file = new File(fileURL);

FileInputStream fis = new FileInputStream(file);

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fis));

以上就是关于java jar包中图片路径读取问题全部的内容,包括:java jar包中图片路径读取问题、java中把class打成jar包后,怎样访问包内路径、java打包成jar文件后,运行会生成一个文件,该怎么去设置生成文件的路径,使其生成在jar文件的同一目录下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9427853.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存