zoukankan      html  css  js  c++  java
  • 文件下载

    文件下载步骤:

    ·创建一个HttpURLConnection对象HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();

    ·获得一个InputStream对象urlConn.getInputStream()

    ·访问网络的权限android.permission.INTERNET

    访问SDCARD:

    得到当前设备的SD卡目录:

    Environment.getExternalStorageDirectory()

    访问SD卡的权限:

    android.permissin.WRITE_EXTERNAL_STORAGE

    Manifest文件中需要添加:

        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    main.xml:

    <?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/downloadTxt"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="下载文本文件"
        />
    <Button  
        android:id="@+id/downloadMp3"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="下载MP3文件 "
        />
    </LinearLayout>
    

     FileUtils.java:

    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;
    	}
    
    }
    

     HttpDownloader.java:

    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()));     //urlConn.getInputStream得到的是字节流,new InputStreamReader()将它转化为字符流,
    //然后转化为BufferedReader,就可以使用BufferedReader的readLine()方法 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; } }

     DownLoad.java:

    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);
    		}
        	
        }
        
    }
    
  • 相关阅读:
    二分查找算法
    java多线程模拟停车位问题
    ECShop模板原理
    linux 常用命令 自己 积累
    ubuntu忘记root密码解决
    centos下一键安装lamp环境,快捷,方便
    腾讯php部分面试题答案
    PHP面试题集
    php笔试题
    流行的php面试题及答案
  • 原文地址:https://www.cnblogs.com/leihupqrst/p/3138220.html
Copyright © 2011-2022 走看看