假设您在从连接对象读取输入流时收到异常。
如果您已经在上面引用的输入流代码之前调用了connection.getInputStream(),您将收到EOF异常。因为连接对象中的输入流已被使用。
此问题的一个解决方案是将输入流的内容写入随机访问文件,因为它们使您能够遍历文件。
public static RandomAccessFile toRandomAccessFile(InputStream is, File tempFile) throws IOException
{
RandomAccessFile raf = new RandomAccessFile(tempFile, "rwd");
byte[] buffer = new byte[2048];
int tmp = 0;
while ((tmp = is.read(buffer)) != -1)
{
raf.write(buffer, 0, tmp);
}
raf.seek(0);
return raf;
}
稍后您可以随时从文件中读取如下内容。
public static InputStream toInputStream(RandomAccessFile file) throws IOException
{
file.seek(0); /// read from the start of the file
InputStream inputStream = Channels.newInputStream(file.getChannel());
return inputStream;
}