How to copy files in Java through bufferedinputstream and bufferedoutputstream?

I want to use bufferedinputstream and bufferedoutputstream to copy large binaries from the source file to the target file

This is my code:

byte[] buffer = new byte[1000];        
    try {
        FileInputStream fis = new FileInputStream(args[0]);
        BufferedInputStream bis = new BufferedInputStream(fis);

        FileOutputStream fos = new FileOutputStream(args[1]);
        bufferedoutputstream bos = new bufferedoutputstream(fos);

        int numBytes;
        while ((numBytes = bis.read(buffer))!= -1)
        {
            bos.write(buffer);
        }
        //bos.flush();
        //bos.write("\u001a");

        System.out.println(args[0]+ " is successfully copied to "+args[1]);

        bis.close();
        bos.close();
    } catch (IOException e)
    {
        e.printStackTrace();
    }

I can copy it successfully, but then I use it

cmp src dest

Compare two files on the command line Error message

appear. Can I know what's wrong with me?

Solution

This is wrong:

bos.write(buffer);

You are writing out the entire buffer, even if you read only part of it You should use:

bos.write(buffer,numBytes);

If you are using java 7 or later, I also recommend using try with resources, otherwise put the close call in the finally block

As Steffen said, if you can use files Copy is a simpler method

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>