问:如果修改jar包的配置文件

purple.taro 2007-04-25 11:25:59
我写了一个小程序想打包,其中有一个配置文件,想打包到jar 中,在使用时,可能会修改配置,请问如何操作这个配置文件。
...全文
1162 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
purple.taro 2007-04-27
  • 打赏
  • 举报
回复
各位下面是我写的一个想修改打包后的包中taro/data/data.dat文件的程序但总提示有最下面所述的错误。
package taro;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;


public class ChangeJar {

public static void setResource(String path) {
JarFile jarFile = null;
String name = null;
try {
name = ChangeJar.class.getProtectionDomain().getCodeSource()
.getLocation().getFile();
jarFile = new JarFile(name);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ZipEntry outEntry = jarFile.getEntry(path);
JarOutputStream jos = null;
try {
jos = new JarOutputStream(new FileOutputStream(name));
jos.putNextEntry(outEntry);
java.io.OutputStreamWriter bw = new OutputStreamWriter(jos);
java.io.BufferedWriter bww = new BufferedWriter(bw);
bww.write("askdfalskdfjaslkfdja;slkdf222223333333alksdjfqpowier");
bww.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void main(String[] args) {
ChangeJar.setResource("taro/data/data.dat");
}

}


打包后,提示错误如下
java.util.zip.ZipException: invalid entry size (expected 38 but got 52 bytes)
at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:189)
at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:288)
at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:14
1)
at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:310)
at sun.nio.cs.StreamEncoder$CharsetSE.implClose(StreamEncoder.java:431)
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:160)
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:222)
at java.io.BufferedWriter.close(BufferedWriter.java:250)
at taro.ChangeJar.setResource(ChangeJar.java:32)
at taro.ChangeJar.main(ChangeJar.java:41)
lixiaoxue85 2007-04-27
  • 打赏
  • 举报
回复
第一 资源文件不应该放在JAR包中
第二 一定要放也可以,只要不改变JAR文件中的MANIFAST就不影响
第三 JAR文件就是压缩文件 可以用WINRAR查看,所以完全可以用java.util.jar下的类来操作
zouxinfox 2007-04-26
  • 打赏
  • 举报
回复
用JarInputStream和JarOutputStream可以修改jar文件
具体用法可以查jdk文档,与java.util.zip.ZipInputStream 类相似
WIN_ANGEL 2007-04-26
  • 打赏
  • 举报
回复
有意思
brooksychen 2007-04-25
  • 打赏
  • 举报
回复
如果以后可能会修改配置文件,那就不要放在jar包里
想想看,你下载的那些打包成jar格式的API,那个需要你打开jar包再修改配置文件?

62,614

社区成员

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

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