FileInputStream in = new FileInputStream("aaa.txt");
FileOutputStream out = new FileOutputStream("bbb.txt");
int c;
while(c=in.read()!=-1){ out.write(c); }请问c是int型,out.write(c)的意思是将c的低8位给out,那么aaa.txt的内容为什么会完整的copy 到 bbb.txt文件中呢??

解决方案 »

  1.   

    in.read本来就是把aaa.txt里的内容完全读取了啊所以当然是完全复制咯
      

  2.   

    read()读进来的是Byte,8bits,存到int变量中高位都是0。write(c)将int强制成byte,高位舍弃,但对所读的内容没有影响。
      

  3.   

    低8位给out? void write(byte[] b) 
              将 b.length 个字节从指定字节数组写入此文件输出流中。 
     void write(byte[] b, int off, int len) 
              将指定字节数组中从偏移量 off 开始的 len 个字节写入此文件输出流。 
     void write(int b) 
              将指定字节写入此文件输出流。 我没看出哪里说是把低8位输出了
      

  4.   

    查了下API 对FileInputStream这样写到 :从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。 
    虽然是单个字节的读取数据,也不会影响中文的输入输出,即使Input文件里有中文output文件里也可以得到中文
      

  5.   


    那比如12,这个市16字节,那么read()读进来的是Byte,只有8字节,那12是分俩次读到c中的??