Last active
August 29, 2015 14:05
-
-
Save SZooo/ee1a0f6fccdded4e2454 to your computer and use it in GitHub Desktop.
Http下载测验
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="vertical" | |
android:layout_width="fill_parent" | |
android:layout_height="fill_parent"> | |
<Button | |
android:id="@+id/textdo" | |
android:layout_width="fill_parent" | |
android:layout_height="wrap_content" | |
android:text="下载歌词" | |
/> | |
<Button | |
android:id="@+id/filedo" | |
android:layout_width="fill_parent" | |
android:layout_height="wrap_content" | |
android:text="下载文件" | |
/> | |
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package mars.download; | |
import mars.utils.HttpDownloader; | |
import android.app.Activity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.view.View.OnClickListener; | |
import android.widget.Button; | |
public class Download extends Activity { | |
/** Called when the activity is first created. */ | |
private Button downloadTxtButton; | |
private Button downloadMp3Button; | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.main); | |
downloadTxtButton = (Button)findViewById(R.id.downloadTxt); | |
downloadTxtButton.setOnClickListener(new DownloadTxtListener()); | |
downloadMp3Button = (Button)findViewById(R.id.downloadMp3); | |
downloadMp3Button.setOnClickListener(new DownloadMp3Listener()); | |
} | |
class DownloadTxtListener implements OnClickListener{ | |
@Override | |
public void onClick(View v) { | |
HttpDownloader httpDownloader = new HttpDownloader(); | |
String lrc = httpDownloader.download("http://192.168.1.107:8080/voa1500/a1.lrc"); | |
System.out.println(lrc); | |
} | |
} | |
class DownloadMp3Listener implements OnClickListener{ | |
@Override | |
public void onClick(View v) { | |
// TODO Auto-generated method stub | |
HttpDownloader httpDownloader = new HttpDownloader(); | |
int result = httpDownloader.downFile("http://192.168.1.107:8080/voa1500/a1.mp3", "voa/", "a1.mp3"); | |
System.out.println(result); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package mars.utils; | |
import java.io.File; | |
import java.io.FileOutputStream; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.OutputStream; | |
import android.os.Environment; | |
public class FileUtils { | |
private String SDPATH; | |
public String getSDPATH() { | |
return SDPATH; | |
} | |
public FileUtils() { | |
//得到当前外部存储设备的目录 | |
// /SDCARD | |
SDPATH = Environment.getExternalStorageDirectory() + "/"; | |
} | |
/** | |
* 在SD卡上创建文件 | |
* | |
* @throws IOException | |
*/ | |
public File creatSDFile(String fileName) throws IOException { | |
File file = new File(SDPATH + fileName); | |
file.createNewFile(); | |
return file; | |
} | |
/** | |
* 在SD卡上创建目录 | |
* | |
* @param dirName | |
*/ | |
public File creatSDDir(String dirName) { | |
File dir = new File(SDPATH + dirName); | |
dir.mkdirs(); | |
return dir; | |
} | |
/** | |
* 判断SD卡上的文件夹是否存在 | |
*/ | |
public boolean isFileExist(String fileName){ | |
File file = new File(SDPATH + fileName); | |
return file.exists(); | |
} | |
/** | |
* 将一个InputStream里面的数据写入到SD卡中 | |
*/ | |
public File write2SDFromInput(String path,String fileName,InputStream input){ | |
File file = null; | |
OutputStream output = null; | |
try{ | |
creatSDDir(path); | |
file = creatSDFile(path + fileName); | |
output = new FileOutputStream(file); | |
byte buffer [] = new byte[4 * 1024]; | |
while((input.read(buffer)) != -1){ | |
output.write(buffer); | |
} | |
output.flush(); | |
} | |
catch(Exception e){ | |
e.printStackTrace(); | |
} | |
finally{ | |
try{ | |
output.close(); | |
} | |
catch(Exception e){ | |
e.printStackTrace(); | |
} | |
} | |
return file; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package mars.utils; | |
import java.io.BufferedReader; | |
import java.io.File; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.InputStreamReader; | |
import java.net.HttpURLConnection; | |
import java.net.MalformedURLException; | |
import java.net.URL; | |
public class HttpDownloader { | |
private URL url = null; | |
/** | |
* 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容 | |
* 1.创建一个URL对象 | |
* 2.通过URL对象,创建一个HttpURLConnection对象 | |
* 3.得到InputStram | |
* 4.从InputStream当中读取数据 | |
* @param urlStr | |
* @return | |
*/ | |
public String download(String urlStr) { | |
StringBuffer sb = new StringBuffer(); | |
String line = null; | |
BufferedReader buffer = null; | |
try { | |
// 创建一个URL对象 | |
url = new URL(urlStr); | |
// 创建一个Http连接 | |
HttpURLConnection urlConn = (HttpURLConnection) url | |
.openConnection(); | |
// 使用IO流读取数据 | |
buffer = new BufferedReader(new InputStreamReader(urlConn | |
.getInputStream())); | |
while ((line = buffer.readLine()) != null) { | |
sb.append(line); | |
} | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} finally { | |
try { | |
buffer.close(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
return sb.toString(); | |
} | |
/** | |
* 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在 | |
*/ | |
public int downFile(String urlStr, String path, String fileName) { | |
InputStream inputStream = null; | |
try { | |
FileUtils fileUtils = new FileUtils(); | |
if (fileUtils.isFileExist(path + fileName)) { | |
return 1; | |
} else { | |
inputStream = getInputStreamFromUrl(urlStr); | |
File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream); | |
if (resultFile == null) { | |
return -1; | |
} | |
} | |
} catch (Exception e) { | |
e.printStackTrace(); | |
return -1; | |
} finally { | |
try { | |
inputStream.close(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
return 0; | |
} | |
/** | |
* 根据URL得到输入流 | |
* | |
* @param urlStr | |
* @return | |
* @throws MalformedURLException | |
* @throws IOException | |
*/ | |
public InputStream getInputStreamFromUrl(String urlStr) | |
throws MalformedURLException, IOException { | |
url = new URL(urlStr); | |
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); | |
InputStream inputStream = urlConn.getInputStream(); | |
return inputStream; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment