【发布时间】:2011-11-02 05:53:14
【问题描述】:
在java中,如何从输入流中读取固定长度并保存为文件? 例如。我想从 inputStream 中读取 5M,并保存为 downloadFile.txt 或其他。(BUFFERSIZE=1024)
FileOutputStream fos = new FileOutputStream(downloadFile);
byte buffer [] = new byte[BUFFERSIZE];
int temp = 0;
while ((temp = inputStream.read(buffer)) != -1)
{
fos.write(buffer, 0, temp);
}
【问题讨论】:
-
继续读写,直到得到5M——你知道读了多少字节;使用数学。
-
inputStream.read(buffer,0,1024);会这样做。读到一个计数,所以你得到 5MB:)
-
@Krishnanunni 实际上,甚至不需要——
read(byte[] buf)将尝试读取buf.length字节。 -
@DaveNewton:但是如果您只剩下 10 个字节要读取怎么办?您可能不想再从输入流中读取任何内容,为此必须创建一个额外的缓冲区很痛苦。
-
@JonSkeet It attempts to read
buf.lengthbytes, and returns the number actually read. 它调用 read(buf, off, len),它调用 read();他们都在 EOF 停止阅读。
标签: java inputstream outputstream fileinputstream fileoutputstream