나는 이것을 오래 전부터 사용해 왔습니다. 정확한 코드는 자바가 실행될 때 완벽하게 작동하지만 안드로이드에서 사용되는 경우 중지하기 전에 최대 16kbs 만 다운로드합니다. 나는 이유를 모른다.파일을 다운로드하는 것은 PC에서 작동하지만 Android에서는 16kb 만받을 수 있습니다.
코드는 다음과 같습니다
URL website = new URL(url);
URLConnection connection = website.openConnection();
connection.connect();
int fileSize = connection.getContentLength();
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(Initializer.getPath(saveName));
fos.getChannel().transferFrom(rbc, 0, fileSize);//using filesize = very large number has no effect except eventual out of memory issues.
위의 다운로드 PDF의 제대로 16킬로바이트보다 작은 크기의 PDF 파일의뿐만 단지 모든 PDF 파일의이 크기에서 멈 춥니 다. 그리고 내가 말했듯이, 비 Android 환경에서 이것은 100 % 작동합니다.
나는 또한이 시도 : 나에게 16킬로바이트보다 큰 크기의 파일을 제공하지만이 그냥 비어 있습니다
Reader reader = new InputStreamReader(connection.getInputStream());
BufferedReader br = new BufferedReader(reader);
File f = new File(Initializer.getPath(saveName));
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
String line = "";
while ((line = br.readLine()) != null)
{
bw.write(line);
bw.newLine();
}
br.close();
bw.close();
합니다. (때문에 그것의 크기) 작동
"https://www.uct.ac.za/downloads/uct.ac.za/currentstud/services/jammie/term/10_hiddingh_weekwkndph.pdf"
예 :
"https://www.uct.ac.za/downloads/uct.ac.za/currentstud/services/jammie/vac/10_hiddingh.pdf"
. private fill() 메소드의 두 루프를 통해서만 만들고있다. 이유는 모르겠지만 시간 초과 일 수 있습니다. – mttdbrd
안녕하세요 고마워요. 필자는 이것을 FileOutputStream을 사용하여 파일에 쓰려고 시도했다가 BufferedWrtier를 시도했습니다. 둘 다 결과적으로 크기가 매우 작은 파일 (0.3kb)을 제공했습니다. 타임 아웃이 문제라고 생각했는데, 이것을 어떻게 높게 설정해야하는지 알고 있습니까? – Mafro34
방금 Eclipse 프로젝트를 만들었고 테스트를하고 있습니다. 내가 찾은 것을 알려주지. – mttdbrd