FileOutputStream 中的write()方法问题!

wren4255 2008-04-08 03:37:45
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文件中呢??
...全文
2158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wren4255 2008-04-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 powerlee2008 的回复:]
read()读进来的是Byte,8bits,存到int变量中高位都是0。write(c)将int强制成byte,高位舍弃,但对所读的内容没有影响。
[/Quote]

那比如12,这个市16字节,那么read()读进来的是Byte,只有8字节,那12是分俩次读到c中的??
J_Factory 2008-04-08
  • 打赏
  • 举报
回复
查了下API 对FileInputStream这样写到 :从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。
虽然是单个字节的读取数据,也不会影响中文的输入输出,即使Input文件里有中文output文件里也可以得到中文
momo1985 2008-04-08
  • 打赏
  • 举报
回复
……看来看去 还是完全复制啊!楼主知道什么时候=-1不?是当已经到达流末尾而没有字节可用时为-1。
momo1985 2008-04-08
  • 打赏
  • 举报
回复
哦楼主不好意思我看错了,这个问题我也要考虑下
hp5212000 2008-04-08
  • 打赏
  • 举报
回复
低8位给out?

void write(byte[] b)
将 b.length 个字节从指定字节数组写入此文件输出流中。
void write(byte[] b, int off, int len)
将指定字节数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
void write(int b)
将指定字节写入此文件输出流。

我没看出哪里说是把低8位输出了
我是风 2008-04-08
  • 打赏
  • 举报
回复
read()读进来的是Byte,8bits,存到int变量中高位都是0。write(c)将int强制成byte,高位舍弃,但对所读的内容没有影响。
momo1985 2008-04-08
  • 打赏
  • 举报
回复
in.read本来就是把aaa.txt里的内容完全读取了啊所以当然是完全复制咯

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧