FileoutputStream输出问题

import java.io.*;

public class FileOutputStreamTest {

public static void main(String[] args) {

        FileInputStream in = null;
        FileOutputStream out = null;
        int b=0;

        byte[] t = new byte[6];

        try {
            in = new FileInputStream("D:\\asd.txt");

            out = new FileOutputStream("D:\\dsa.txt");


            while((b=in.read(t))!=-1) {

                out.write(t,0,6);

            }
            in.close();
            out.flush();
            out.close();



        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.print("找不到文件");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.print("读取错误");
        }
        System.out.print("文件成功复制");
}

}

asd.txt中的内容为:a A 567
输出的内容为:a A 567 A 56
不懂?求解释一下。

read可能返回的不是每次都是6个字节, 如果不是的话,可能会把上次读出,但这次没有覆盖缓冲区的内容输出来,只需把6改成b就好了

  while((b=in.read(t))!=-1) {

                System.out.println("read bytes:"+b);
                out.write(t,0,b);

            }