当前位置: 代码迷 >> Android >> 帮忙看下这段代码有什么有关问题啊
  详细解决方案

帮忙看下这段代码有什么有关问题啊

热度:28   发布时间:2016-04-28 07:11:42.0
帮忙看下这段代码有什么问题啊。
public void downloadFile(String URL, String fileName)
throws Exception {
InputStream is = null;
try {
// 创建、打开连接
URL myUrl = new URL(URL);
URLConnection connection = myUrl.openConnection();
connection.connect();

// 得到访问内容并保存在输入流中。
is = connection.getInputStream();
// 得到文件的总长度。注意这里有可能因得不到文件大小而抛出异常
int len = connection.getContentLength();

Log.e("down", String.valueOf(len));
Log.e("fileName", fileName);
if (is != null) {
File file = new File(SD_PATH + fileName);
// 如果文件存在,则删除该文件。
if (file.exists()) {
file.delete();
Log.e("down", "已删除文件");
}
RandomAccessFile randomAccessFile = new RandomAccessFile(
SD_PATH + fileName, "rw");
byte[] buffer = new byte[4096];
int length = -1;
while ((length = is.read(buffer)) != -1) {
randomAccessFile.write(buffer, 0, length);
nowSize+=length;
Log.e("down", "正在下载。。。。" + (nowSize));
}

is.close();
randomAccessFile.close();

}
} catch (Exception e) {

Log.e("down", e.toString());
} finally {

}

Debug调试了一下,到RandomAccessFile randomAccessFile = new RandomAccessFile(SD_PATH + fileName, "rw");的时候,跳到catch了,到底是什么问题啊。。
Logcat错误信息是,catch中打印了java.io.FileNotFoundException: /sdcard/DBMarket/TogicVideo_V2_5_release_togic_ZNDS.apk: open failed: ENOENT (No such file or directory)

------解决方案--------------------
/sdcard/DBMarket/  这个路径存在吗?使用Java IO写文件时会自动创建文件,但是如果路径都不存在的话就会报异常的,需要自己手动创建这个路径。即:

 File p = new File(filePath);
        if (!p.exists()) {
            p.mkdirs();
        }


另外,创建路径的时候后面最好不要加 /  ,然后创建IO流的时候使用 filePath + File.separator + fileName
  相关解决方案