0
我在下面的代碼中得到了MalformedURLexception,並且我不知道導致它的原因。程序死機,同時在android中下載文件
public void down(String url)
{ try {
URL url1 = new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
File SDCardRoot = Environment.getExternalStorageDirectory();
//create a new file, specifying the path, and the filename
//which we want to save the file as.
File file = new File(SDCardRoot,"somefile.ext");
FileOutputStream fileOutput = new FileOutputStream(file);
InputStream inputStream = urlConnection.getInputStream();
int totalSize = urlConnection.getContentLength();
int downloadedSize = 0;
byte[] buffer = new byte[1024];
int bufferLength = 0; //used to store a temporary size of the buffer
while ((bufferLength = inputStream.read(buffer)) > 0) {
fileOutput.write(buffer, 0, bufferLength);
//add up the size so we know how much is downloaded
downloadedSize += bufferLength;
//report progress
}
fileOutput.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
它說未知的協議。 連接完全正常,直到讀取部分出現, 之前的代碼是甚至打印正確的文件大小。 此外,我想下載的文件有一個像 http://download12.aomethin.com/blaa-blaa url如果我嘗試添加www,請求開始重定向。 雖然我認爲這可能是一個不好意思,但我也想知道如何獲得這個文件的名稱,並保存該名稱而不是我選擇的文件名。
編輯:該程序正在工作,現在我只需要知道如何得到該文件的正確名稱。並將其作爲後臺進程。
@Home是不是錯了我是正確的,現在加入堆棧跟蹤... – Arveen
@ rigy73哪裏是你的堆棧跟蹤? – IamAlexAlright
@Alex嘿,我再次嘗試,程序正在工作,該文件正在下載,但正如這種情況發生應用程序似乎掛起。我如何改變這一點。 – Arveen