android开发中,使用到了文件下载并写入到SD卡中,但是每次下载到的文件都不完整。 200

下载代码如下:publicFilewriteToSDFromInput(Stringpath,StringfileName,InputStreaminputStream)... 下载代码如下:
public File writeToSDFromInput(String path, String fileName,
InputStream inputStream) {
File file = null;
OutputStream outputStream = null;
createSDDir(path);
try {
file = createFileInSDCard(fileName, path);
outputStream = new FileOutputStream(file);
byte buffer[] = new byte[4 * 1024];
int temp;
while ((temp = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, temp);
}
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
黑色为下载到的文件信息,白色的为实际文件,可以看到文件大小不一样
日志当中用蓝色字体提示:request time failed: java.net.SocketException: Address family not supported ,但应用程序并没报错,仍然正常运行
展开
 我来答
397835375
2011-03-24 · TA获得超过1779个赞
知道小有建树答主
回答量:866
采纳率:0%
帮助的人:1313万
展开全部
public File writeToSDFromInput(String path, String fileName,
InputStream inputStream) {
File file = null;
OutputStream outputStream = null;
createSDDir(path);
try {
file = createFileInSDCard(fileName, path);
outputStream = new FileOutputStream(file);
byte buffer[] = new byte[4 * 1024];
int temp;
while ((temp = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, temp);
}
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
hfjws
2011-03-13 · 超过10用户采纳过TA的回答
知道答主
回答量:171
采纳率:0%
帮助的人:81.8万
展开全部
file = createFileInSDCard(fileName, path);
outputStream = new FileOutputStream(file);
byte buffer[] = new byte[4 * 1024];
int temp;
while ((temp = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, temp);
}
outputStream.flush();
} catch (IOException e) {
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甘伟cq15c
2016-06-27
知道答主
回答量:7
采纳率:0%
帮助的人:4657
展开全部

刚好遇到,我来回答,请给我点赞。

不谢。

        byte buffer [] = new byte[4 * 1024];  
//      while((input.read(buffer)) != -1){  
//          output.write(buffer);  
//      }  
          
        int length;   
        while((length=(input.read(buffer))) >0){   
        output.write(buffer,0,length);   
        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幻涅湮
2015-10-26
知道答主
回答量:1
采纳率:0%
帮助的人:1231
展开全部
你解决了吗?我的代码跟你的基本一样,也是下载不完整
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式