小弟有1个文件打在jar包里面 a.txt。。读的话没有问题用class.getResourceAsStream(String s);
但是如何写这个文件呢?直接用File file= new File("a.txt");好象不能读jar包里面的
URI uri = class.getResource("a.txt").toURI();
File file=new File(uri);
也不能弄到jar包里面。。
到底应该如何做。。谢谢大家了

解决方案 »

  1.   

    使用ZIP输出流,JAR其实就是ZIP文件,
    只是多了一些信息.下面是代码.
        
    /*
     *Zip流可以输出到文件,套接字,字符串或者字节数组.
     */
     
    package OutputStream;
    import java.io.*;
    import java.util.zip.*;public class ZipOutputStreamDemo
    {
    ZipOutputStream zip;

    public ZipOutputStreamDemo(String name) throws java.io.IOException{
    zip = new ZipOutputStream(
    new BufferedOutputStream(
    new FileOutputStream(name)));
    }

    public void writeFile(String name) throws java.io.IOException{
    //加入一个zip条目
    zip.putNextEntry(new ZipEntry(name));

    BufferedReader in = new BufferedReader(
    new FileReader(name));

    int c;
    while((c=in.read())!=-1){ //读入一个字符直到EOF
    zip.write(c); //写入刚才读到的字符.
    }

    }

    public static void main(String[] args) throws java.io.IOException{
    //生成的zip文件将被存放的目录
    ZipOutputStreamDemo demo = new ZipOutputStreamDemo("OutputStream/code.jar");
    //zip里被压缩的文件的目录.
    demo.writeFile("OutputStream/ZipOutputStreamDemo.java");
    demo.zip.close();
    }
    }
      

  2.   

    楼上的好像只是写jar文件吧,楼主要的是读包里的某个文件
      

  3.   

    对于写还有问题。。我想写ObjectOutputStream那样写object到jar里面的文件的话应该如何操作啊读。。我有了
    可以用getClass().getResourceAsStream()拿到InputStream
    然后用ObjectInputStream读
      

  4.   

    发现问题。。用zzhzzh204553(真的好想你) 代码写zip的时候。。会把其他文件都delete。。zip包里面只剩下你自己写入的那个文件如何保留原来的文件啊??!!只对需要的文件做修改
      

  5.   

    楼主
    问一下
    在类read_a_txt被并入某个jar后,其中
    ...
    new BufferedReader( new InputStreamReader(Class.getResourceAsStream("a.txt")));
    ...
    是对与read_a_txt处在同一目录下(或者是同一包下)的a.txt进行读入。
    要是改成这样
    ...
    new BufferedReader( new InputStreamReader(Class.getResourceAsStream("dir/a.txt")));
    ...
    为什么不能对类read_a_txt下的一个目录(或是包)内的a.txt进行读呢?