奇怪,我先用 inputstream 读取了一个 .exe 的文件,然后在原封不动的用 BufferedOutputStream 写出来,但是却不能运行了,这是怎么回事呢。

解决方案 »

  1.   

    你使用byte[] 读取和写入的吗?
    如果是,把代码贴出来吧!
      

  2.   

    File file1 = new File("D:\\dvd.avi");
    InputStream dvdinput = new FileInputStream(file1);
    InputStream in = new BufferedInputStream( dvdinput );
    System.out.println(in.available());
    byte b[] = new byte[ in.available() ];
    while( in.read() != -1 ){
    in.read();
    }

    File file2 = new File("D:\\dvd1.avi");
    if( !file2.exists() ){
    file2.createNewFile();
    }
    OutputStream outputStream = new FileOutputStream( file2 );
    OutputStream outputbuffer = new BufferedOutputStream( outputStream, 512 ); outputbuffer.write(b);
    //OutputStream outdvd = new OutputStream();
      

  3.   

    可能是缓存的问题..flush()试试!!!代码不全,不太理解!!!
      

  4.   

        File file1 = new File("D:\\dvd.avi");
        InputStream dvdinput = new FileInputStream(file1);
        InputStream in = new BufferedInputStream( dvdinput );
        
        File file2 = new File("D:\\dvd1.avi");
        OutputStream outputStream = new FileOutputStream( file2 );
        OutputStream outputbuffer = new BufferedOutputStream( outputStream, 512 );
        
        System.out.println(in.available());    if( !file2.exists() ){
            file2.createNewFile();
        }
        byte b[] = new byte[ in.available() ];
        int len= -1;
        while( (len=in.read(b)) != -1 ){ // 这里你弄错了!
            outputbuffer.write(b,0,len); // 这里读完了,马上写入到新文件
        }
        outputbuffer.flush();
        outputbuffer.close();
        in.close();
      

  5.   


    byte[] buf = new byte[1024];FileInputStream in = new FileInputStream("D:\\dvd.avi");
    FileOutputStream out = new FileOutputStream("D:\\dvd1.avi");

    int len;
    while ((len = in.read(buf)) > 0) {
      out.write(buf, 0, len);
    }
        
    in.close();
    out.flush();
    out.close();
      

  6.   

    采用BufferedOutputStream是先写到缓冲区了的,要用flush()方法输出缓冲区
      

  7.   

    写完之后 一定要close 
    It'll invoke the flush method automatically.
      

  8.   


    我是新手,有点小问题.
    程序结束时不要写
    dvdinput.close();

    outputStream.close();
    吗?