package com.coderising.download.impl; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import com.coderising.download.api.Connection; import com.coderising.download.api.ConnectionException; public class ConnectionImpl implements Connection { private URL urlObj; private URLConnection connection; private final static int MAX_BUFF_LENGTH=1024; public ConnectionImpl(URL urlObj) throws IOException{ this.urlObj=urlObj; // this.connection=urlObj.openConnection(); } @Override public byte[] read(int startPos, int endPos) throws IOException { InputStream inputstream = null; ByteArrayOutputStream os=new ByteArrayOutputStream(); try { // connection.setAllowUserInteraction(true); connection=urlObj.openConnection(); connection.setRequestProperty("Range", "bytes=" + startPos + "-" + endPos); inputstream = connection.getInputStream(); byte[] buff = new byte[MAX_BUFF_LENGTH]; int len; inputstream.skip(startPos); // 一次不能刚好读1024个字符 while ((len = inputstream.read(buff)) != -1) { os.write(buff, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { inputstream.close(); os.close(); } return os.toByteArray(); } @Override public int getContentLength() { return connection.getContentLength(); } @Override public void close() { } public void setUrlObj(URL urlObj) { this.urlObj = urlObj; } public void setConnection(URLConnection connection) { this.connection = connection; } }