android示例之下载文件并写入到SD卡的指定目录中
来源:互联网 发布:java缺少返回语句 编辑:程序博客网 时间:2024/05/18 00:53
Android中从服务器下载文件并写入到SD卡上。
工具类:
FileUtil.Java
- package com.lyc.util;
-
- import java.io.File;
-
- public class FileUtil {
- private static String SDPATH;
- public FileUtil(){
-
- SDPATH=Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator;
- }
-
-
-
-
- public File createFile(String fileName){
- File file=new File(SDPATH+fileName);
- try {
- file.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return file;
- }
-
-
-
-
- public File createDir(String dirName){
- File file=new File(SDPATH+dirName+File.separator);
- file.mkdir();
- return file;
- }
-
-
-
-
-
- public boolean isExist(String dirName,String fileName){
- File file=new File(SDPATH+dirName+fileName);
- return file.exists();
- }
-
-
-
-
-
-
- public InputStream getIS(String urlStr){
- URL url=null;
- HttpURLConnection urlConn=null;
- InputStream is=null;
- try {
- url=new URL(urlStr);
- urlConn=(HttpURLConnection)url.openConnection();
- is=urlConn.getInputStream();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return is;
- }
-
-
-
-
-
-
-
- public File IS2SD(InputStream is,String dirName,String fileName){
- OutputStream os=null;
- File file=null;
- try {
- createDir(dirName);
- file=createFile(dirName+fileName);
- os=new FileOutputStream(file);
- byte buffer[]=new byte[1024*4];
- int temp=0;
- while((temp=is.read(buffer))!=-1){
- os.write(buffer, 0, temp);
- }
- os.flush();
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- try {
- os.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return file;
- }
-
- }
下载文件的类:FileDownloader.java- public class FileDownloader {
- private FileUtil fileUtil=null;
- public FileDownloader(){
- this.fileUtil=new FileUtil();
- }
-
-
-
-
-
-
-
-
- public int downloadFile(String dirName,String fileName,String urlStr){
- if(fileUtil.isExist(dirName,fileName)){
- return 1;
- }
- File file=fileUtil.IS2SD(fileUtil.getIS(urlStr), dirName, fileName);
- if(file.length()==0 || file==null){
- return 2;
- }
- return 0;
- }
-
-
-
-
-
- public String download(String urlStr){
- StringBuffer sb=new StringBuffer();
- String line=null;
- InputStream is=fileUtil.getIS(urlStr);
-
- BufferedReader br=new BufferedReader(new InputStreamReader(is));
- try {
- while((line=br.readLine())!=null){
- sb.append(line);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- try {
- br.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return sb.toString();
- }
- }
在activity中操作下载,点击按钮下载:- mp3.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- new Thread(new Runnable(){
- public void run() {
- int result=new FileDownloader().downloadFile("mp3/", "001.mp3", "http://192.168.1.100:8080/test/001.mp3");
- System.out.println("result="+result);
- }
- }).start();
- }
- });
不要忘记加上权限,访问网络和对SD卡读写的权限:- <uses-permission android:name="android.permission.INTERNET"/>
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
0 0