package main.coding_170309.impl; import main.coding_170309.api.Connection; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.Arrays; /** * Created by peter on 2017/3/9. */ public class ConnectionImpl implements Connection { private String url; private HttpURLConnection urlConnection; public ConnectionImpl(String url) { this.url = url; } @Override public byte[] read(int startPos, int endPos) throws IOException { urlConnection = (HttpURLConnection) new URL(url).openConnection(); urlConnection.setRequestProperty("Range","bytes="+startPos+"-"+endPos);//从指定位置开始 InputStream in = urlConnection.getInputStream(); byte[] data = new byte[endPos-startPos+1]; byte[] temp = new byte[1024]; int pointer=0;//表示data每次偏移量 int length ;//表示一次能读取的bit数 while ((length=in.read(temp,0,temp.length))!=-1){ System.arraycopy(temp,0,data,pointer,length); pointer+=length; } return Arrays.copyOf(data,pointer); } @Override public int getContentLength() { return urlConnection.getContentLength(); } @Override public String getURL() { return url; } @Override public void close() { urlConnection.disconnect(); } }