我正在使用以下Java代码从Internet下载文件:
String address = "http://melody.syr.edu/pzhang/publications/AMCIS99_vonDran_Zhang.pdf"; URL url = new URL(address); System.out.println("Opening connection to " + address + "..."); URLConnection urlC = url.openConnection(); urlC.setRequestProperty("User-Agent", ""); urlC.connect(); InputStream is = urlC.getInputStream(); FileOutputStream fos = null; fos = new FileOutputStream("myFileName"); int oneChar, count = 0; while ((oneChar = is.read()) != -1) { System.out.print((char)oneChar); fos.write(oneChar); count++; } is.close(); fos.close(); System.out.println(count + " byte(s) copied");
我想知道是否可以下载文件的一部分。例如,对于5MB的文件,下载最后2MB。
如果服务器支持(并且HTTP 1.1服务器 应支持 ),则可以使用范围请求:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
此外,一次读取一个字符的效率非常低-您应该分块读取,例如4、16或32 KB。