
你是用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文件的同一目录下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)