我正在從網絡上下載數據庫,大小介於100千字節和500千字節之間。這裏是我的代碼(刪除無用代碼):FileOutputStream真的很慢
URLConnection uConnection = downloadUrl.openConnection();
InputStream iS = uConnection.getInputStream();
BufferedInputStream bIS = new BufferedInputStream(iS);
byte[] buffer = new byte[1024];
FileOutputStream fOS = new FileOutputStream(db);
int bufferLength = 0;
while ((bufferLength = bIS.read(buffer)) > 0) {
fOS.write(buffer, 0, bufferLength);
}
fOS.close();
我的問題是,他需要很長時間才能完成while語句。我把代碼搞亂了嗎?對於這樣的小文件不應該花那麼長時間,不是嗎?我在談論1分鐘,三個文件不超過1 MB ...預先感謝!
什麼讓你覺得這個問題是'FileOutputStream'?這個問題可能很容易被帶寬下載資料。你用過類似Traceview來確定你正在花費的地方 你的時間? – CommonsWare 2012-02-11 16:40:55
我不知道Traceview是什麼。我調試了代碼,這是因爲while語句它非常慢。我也認爲,當我的InputStream-Object被實例化時,數據的下載就完成了。還是不是在那裏下載的? – ezcoding 2012-02-11 16:44:53
使用緩衝區大小1024是恕我直言,一個壞主意。在智能手機中,所有媒體通常具有4096字節或更大的塊大小(例如SD卡)。 – Robert 2012-02-11 16:49:58