File file = new File("D:\\cirros-0.3.4-x86_64-disk.img");//一个本地20多M的假镜像
PutMethod put = new PutMethod("");//我使用httpclient3.1传输文件
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
//下面是将文件写入http的(OutputStream) put.getRequestEntity()中
bos = new BufferedOutputStream((OutputStream) put.getRequestEntity());
try {
bis = new BufferedInputStream(new FileInputStream(file));
byte[] buff = new byte[1024];
int i;
while ((i = bis.read(buff)) >= 0) {//这里前8次写入都没问题,到了第九次就会报异常了 异常是空指针,什么鬼呢?新手勿喷各位大神
bos.write(buff, 0, i);
}
} catch (IOException e) {
e.printStackTrace();
}
你最后一次刚好读取的是0 ,没有内容,所以while条件过来,但是null,你改成while ((i = bis.read(buff)) > 0)
java认为读到-1就为文件全部读取完毕,所以你可以把循环改为while ((i = bis.read(buff)) !=-1)
你的异常是空指针?是报的什么空指针,请把异常信息显示一下.上面的回答应该不正确,
把循环改为while ((i = bis.read(buff)) !=-1)