这应该非常简单,我已经在谷歌上搜索了,但没有看到任何人提到我注意到的问题。我看到的所有内容都做了同样基本的事情。就像这样:
byte [] buffer = new byte[256];
int bytesRead = 0;
while((bytesRead = input.read(buffer)) != -1)
{
output.write(buffer, 0, bytesRead);
}
我知道当读到EOF时,read()函数会返回-1,但是如果文件比缓冲区甚至同样大小还要小呢?例如,正在读取一个200字节的文件。我假设它已经读取了这200个字节,但是返回-1。这符合Java文档的描述,但也意味着write()从未被调用。我本来期望它告诉我它已经读取了这200个字节,并在下一次迭代中返回-1。
如何解决这个“问题”?
read()
函数之前,input
是如何创建并被处理的。 - erickson