为我sd卡下载歌曲一个sd卡

android实现文件下载并存储进SD卡
标题很明显,这篇博文主要内容是:
在android程序中实现文件的下载并存储进手机或虚拟机的SD卡
在demo中我主要操作为:
1,根据有效的文本文件url地址,读取文本内容;demo使用的是.lrc格式的文件。
2,根据有效的文本文件url地址,把文件从网络地址下载,并放在手机SD卡中;demo使用的是.mp3文件。
很明显可以看出来两个demo用的文件是我们经常用到的,即是存储歌词和歌曲的两个文件,使用性强。
好了下面直接看过程,首先新建一个安卓项目,我这里定义为类DownloadActivity,很明显是一个下载demo,
大家看一下我项目的目录结构:
我用的版本是4.0的,图中画红色框的是需要编写代码的文件!下面给出文件的具体代码:
-------------------------------------- DownloadActivity.java
-----------------------------------
package com.senly.
import com.senly.utils.HttpD
import android.os.B
import android.app.A
import android.view.M
import android.view.V
import android.view.View.OnClickL
import android.widget.B
public class DownloadActivity extends Activity {
&private Button downloadLRC =
&private Button downloadMP3 =
&@Override
&protected void onCreate(Bundle
savedInstanceState) {
&&super.onCreate(savedInstanceState);
&&setContentView(R.layout.activity_download);
&&downloadLRC =
(Button)findViewById(R.id.downloadLRC);
&&downloadMP3 =
(Button)findViewById(R.id.downloadMP3);
&&downloadLRC.setOnClickListener(new
DownloadLRCListener());
&&downloadMP3.setOnClickListener(new
DownloadMP3Listener());
&class DownloadLRCListener implements
OnClickListener{
&&@Override
&&public void onClick(View v)
MyThread(1).start();
&class DownloadMP3Listener implements
OnClickListener{
&&@Override
&&public void onClick(View v)
MyThread(2).start();
&@Override
&public boolean onCreateOptionsMenu(Menu menu)
&&getMenuInflater().inflate(R.menu.activity_download,
&class MyThread extends Thread{
&&private int flag = 0 ;
&&public MyThread(){}
&&public MyThread(int
&&&this.flag =
&&@Override
&&public void run() {
&&&if ( 1 ==
flag ) { // 基本文件下载
&&&&HttpDownloader
httpDownloader = new HttpDownloader();
&&&&String
contents = httpDownloader.downloadBaseFile("");
&&&&System.out.println(contents);
&&&if ( 2 ==
flag ){ // 复杂文件下载及存储到手机SD卡
&&&&HttpDownloader
httpDownloader = new HttpDownloader();
resultInt = httpDownloader.downloadAllFile("");
&&&&System.out.println(resultInt);
------------------------------------------ FileUtils.java
-----------------------------------
package com.senly.
import java.io.F
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import android.os.E
import android.util.L
public class FileUtils {
&private String SD_PATH;
&public String getSD_PATH() {
&&return SD_PATH;
&public FileUtils (){
&&//得到当前外部存储设备的目录
&&SD_PATH& =
Environment.getExternalStorageDirectory() + "/";
&public File createSDFile(String fileName) throws
IOException{
&&File file& =
new File(SD_PATH + fileName);
&&file.createNewFile();
&public File createSDDir(String dirName){
&&File dir = new File(SD_PATH +
&&dir.mkdir();
&public boolean isFileExist(String
fileName){
&&File file = new File(SD_PATH +
fileName);
&&return file.exists();
&public File write2SDFromInput(String path,String
fileName,InputStream input){
&&File file =
&&OutputStream output =
&&&createSDDir(path);
createSDFile(path + fileName);
&&&output = new
FileOutputStream(file);
&&&byte buffer[]
= new byte[4 * 1024];
&&&while(input.read(buffer)
&&&&output.write(buffer);
&&&//清掉缓存
&&&output.flush();&
&&} catch (Exception e) {
&&&Log.e("write2SDFromInput",
e.getMessage());
&&} finally {
(output != null){
&&&&&output.close();
&&&} catch
(IOException ioe){
&&&&Log.e("write2SDFromInput",
ioe.getMessage());
------------------------------------------
HttpDownloader.java&-----------------------------------
package com.senly.
import java.io.BufferedR
import java.io.F
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.net.HttpURLC
import java.net.MalformedURLE
import java.net.URL;
public class HttpDownloader {
&private URL url =
&public String downloadBaseFile(String
&&StringBuffer sb = new
StringBuffer();
&&String line =
&&BufferedReader reader =
&&&//创建一个url对象
&&&url = new
URL(urlStr);
&&&//通過url对象,创建一个HttpURLConnection对象(连接)
&&&HttpURLConnection
urlConnection = (HttpURLConnection)url.openConnection();
&&&//通过HttpURLConnection对象,得到InputStream
&&&reader = new
BufferedReader(new
InputStreamReader(urlConnection.getInputStream()));
&&&//使用io流读取文件
&&&while ((line
= reader.readLine()) != null){
&&&&sb.append(line);
&&}catch(Exception e){
&&&e.printStackTrace();
&&}finally{
(reader != null){
&&&&&reader.close();
&&&} catch
(Exception e){
&&&&e.printStackTrace();
&&return sb.toString();
&public int downloadAllFile(String urlStr,String
path, String fileName){
&&InputStream inputStream =
&&&FileUtils
fileUtils = new FileUtils();
(fileUtils.isFileExist(path + fileName)){
&&&&return
&&&&inputStream
= getInputStream(urlStr);
file = fileUtils.write2SDFromInput(path, fileName,
inputStream);
( file == null ){
&&&&&return
&&} catch (Exception e) {
&&&e.printStackTrace();
&&} finally {
(inputStream != null){
&&&&&inputStream.close();
(Exception ioe){
&&&&ioe.printStackTrace();
&&return 0;
&private InputStream getInputStream(String
&&&&throws
MalformedURLException,IOException {
&&url = new URL(urlStr);
&&HttpURLConnection
httpURLConnection = (HttpURLConnection)url.openConnection();
&&InputStream inputStream =
httpURLConnection.getInputStream();
&&return inputS
------------------------------ layout / activity_download.xml
---------------------------------
&RelativeLayout xmlns:android=""
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DownloadActivity" &
android:id="@+id/myTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/myTextView" /&
android:id="@+id/downloadLRC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/myTextView"
android:layout_marginTop="10dp"
android:text="@string/downloadLRC" /&
android:id="@+id/downloadMP3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/downloadLRC"
android:layout_marginTop="10dp"
android:text="@string/downloadMP3" /&
&/RelativeLayout&
-------------------------------------- values / strings.xml
-----------------------------------
&?xml version="1.0"
encoding="utf-8"?&
&resources&
name="app_name"&Download&/string&
&string name="hello_world"&Hello
world!&/string&
name="menu_settings"&Settings&/string&
&&& &string
name="myTextView"&下载文件&/string&
name="downloadLRC"&downloadLRC&/string&
name="downloadMP3"&downloadMP3&/string&
&/resources&
----------------------------------------
AndroidManifest.xml&-----------------------------------
&?xml version="1.0"
encoding="utf-8"?&
&manifest xmlns:android=""
package="com.senly.download"
android:versionCode="1"
android:versionName="1.0" &
android:minSdkVersion="8"
android:targetSdkVersion="14" /&
&&& &!-- 操作外部存储设备文件&
&&& &uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&
&!-- 添加WiFi以及访问网络的权限
&uses-permission
android:name="android.permission.INTERNET"
&&/uses-permission&
&application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" &
&&&&&&&&&&&
android:name="com.senly.download.DownloadActivity"
&&&&&&&&&&&
android:label="@string/app_name" &
&&&&&&&&&&&
&intent-filter&
&&&&&&&&&&&&&&&
&action android:name="android.intent.action.MAIN"
&&&&&&&&&&&&&&&
android:name="android.intent.category.LAUNCHER"
&&&&&&&&&&&
&/intent-filter&
&/activity&
&/application&
&/manifest&
好的,到这里项目就算开发完了,不过你肯定有疑问,这下面两个url找不到啊!
没错,你肯定找不到,假如你只是想了解文件下载的实现,那么你直接到网络上找到两个文件地址代替就行了
可以跟我一样使用 .lrc 和 .mp3
文件,当然可以是其他文件,但是要注意“文件下载类HttpDownloader”中两个方法的执行范围:
1,对于 downloadBaseFile(String urlStr)
方法,是根据URL下载文件地址,前提是这个文件中的内容是文本类型。
2,对于 downloadAllFile(String urlStr,String path, String fileName)
方法,&是根据URL下载文件地址并把文件写入到SD卡,支持几乎大部分文件类型。
到这里,文章的大概目的就已经达到了!
(假如还没成功请往下看!)
点击 downloadLRC 按钮,下载歌词文件,并打印出来!(会出现乱码,这是logcat的问题)&
点击 downloadMP3 按钮 , 会打印 0 成功 ,1 已经存在 (我操作两次,所以显示1)
但是,假如在网上找不到这些文件的那该这么实验呢,我是如何把本地作为服务器的呢,很简单,接着看。
首先,使用 tomcat
,这个对于java开发人员来说,是熟悉得不过了的,非常有亲切感是吧!(当然你可以使用其他服务器)
找到tomcat安装目录下的conf文件夹中的server.xml文件,在&Host&中写上如下语句,部署项目如下:
&Context docBase="E:\mywork\CFM_xfire"
path="/CFM_xfire"&&/Context&
1,docBase="E:\mywork\CFM_xfire"
指明项目路径
2,path="/CFM_xfire" 指明在浏览器上访问的地址
其中 CFM_xfire 是我的项目(随便新建一个java
web项目就行了),主要目的是存放 .lrc
和&.mp3 文件,目录如下(注意路径)
在tomcat上部署好之后,启动tomcat,在浏览器地址栏上可以尝试访问这两个地址(你是访问不了的,因为192.168.1.104是我联网的ip地址):
当然你访问这两个地址才是正确的,可能会更亲切:
第一个会显示歌词信息,第二个会提示下载!
那为什么我在程序中会使用 192.168.1.104& 因为安卓访问&
127.0.0.1 和 localhost 会报错,因为它希望访问ip协议中的url地址!这一点请记住!庆幸的是,你假如看得了这篇文章,那么证明你正在上网,那么就换成你的ip就行了!
大家要是遇到什么解决不了的问题,请提出来一起解决!
如何查看文件是否已经下载在手机SD中,请看我另一篇文章!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。查看: 22043|回复: 8
来自手机版
各位大神帮帮忙,为什么我设置了默认存储为sd卡,但下载的应用都会自动安装在手机内存里。
请输入验证码:
呵呵,我手机还没到手,帮你顶一下
我也出现你说的这种情况,后来我用电脑的豌豆荚安装。手机连线电脑,在电脑豌豆荚设置强制安装到SD卡,并从电脑下载安装APP,这样就可以了。笨办法,等待其他大神。
豌豆荚可以哦
确实如楼主所述,只能用软件在电脑上安装,能直接装到SD卡,之前装的只能移动到SD卡了。
那是因为你的手机没有root
来自手机版
dellen8009 发表于
那是因为你的手机没有root
已用root精灵成功root了
现在还没完善这个问题,暂时安装一个“程序转移到SD卡”就能解决。
yiutbo 发表于
已用root精灵成功root了
那就连接pc在pc上通过手机助手转移吧
站长推荐 /1
依《互联网跟帖评论服务管理规定》相关要求,10月1日起会员账户需实名认证。如您还未认证,请尽快完成,感谢您的理解及支持!
移动叔叔. 版权所有,专业的网络售后平台 (
商务合作||||在线时间4 小时
版本V7.2.4.0.MAACNDB
积分 73, 距离下一级还需 127 积分
积分 73, 距离下一级还需 127 积分
机型小米手机5
MIUI版本V7.2.4.0.MAACNDB
如何设置保存到SD卡,还有下载管理器里的下载保存路径,如何设置,下载都是保存在手机里的,我希望能保存在SD卡中,如何设置呢?
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验4498 米
在线时间914 小时
积分 5437, 距离下一级还需 14563 积分
积分 5437, 距离下一级还需 14563 积分
机型一加手机
签到次数112
MIUI版本5.5.8
本帖最后由 angelhack 于
11:20 编辑
目前小米手机上 安装的软件都默认在手机 这样可以避免因为内存卡的质量导致运行速度的影响
如果楼主非要移动到SD卡的话 可以进入程序管理选择程序移动到SD卡即可(前提要软件支持移动到SD卡)
用自带浏览器下载的默认路径是SD卡根目录的download(sdcard/download)也有的在SD卡根目录下MIUI文件夹内(比如主题,用音乐在线下载的音乐歌词等等)暂时不支持设置下载路径
楼主可以选择第三方下载工具 比如UC
经验29458 米
在线时间1383 小时
机型小米平板1
签到次数171
MIUI版本7.6.8
小米手机内置了4G ROM,用户可用3.05G左右,所以能安装很多软件哦!而且安装在手机中能避免很多兼容性的问题,并不需要刻意安装到SD卡中。
如果你一定要移动到SD卡中,可以打开系统设置-程序-程序管理-SD卡中,里面有支持移动到SD卡的软件列表,点击你要移动的软件,选择移动到SD卡选项即可!
也可以安装安卓优化大师等软件,使用程序整理功能一键移动到SD。
别外下载管理器下载的软件都是保存在SD卡中,miui会自动为你归类的哦!一般通过浏览器下载的保存在SD卡下miui\download里面,主题管理器下载的保存在MIUI\theme等等。当然每周的OTA ROM保存在SD下的downloaded_rom文件夹
在线时间4 小时
版本V7.2.4.0.MAACNDB
积分 73, 距离下一级还需 127 积分
积分 73, 距离下一级还需 127 积分
机型小米手机5
MIUI版本V7.2.4.0.MAACNDB
在下载管理器里面,所有已下载的文件,都是在手机内,如何把这类文件存储到SD卡中,比如下载能自动的保存到SD卡里。
经验764 米
在线时间43 小时
版本JMACNBF7.0
积分 949, 距离下一级还需 1051 积分
积分 949, 距离下一级还需 1051 积分
机型小米手机1/1S
MIUI版本JMACNBF7.0
机身内存暗点肖软件还可以,装个凯立德,EA什么的就必须借助SD卡了。
经验127 米
在线时间83 小时
版本2.3.6f
积分 261, 距离下一级还需 239 积分
积分 261, 距离下一级还需 239 积分
机型小米手机1/1S
MIUI版本2.3.6f
看回复,顺手拿米。
经验2854 米
在线时间1707 小时
版本4.12.5
积分 3945, 距离下一级还需 1055 积分
积分 3945, 距离下一级还需 1055 积分
机型小米手机1/1S
签到次数116
MIUI版本4.12.5
小米手机内置了4G ROM,用户可用3.05G左右,所以能安装很多软件哦!而且安装在手机中能避免很多兼容性的问题,并不需要刻意安装到SD卡中。
如果你一定要移动到SD卡中,可以打开系统设置-程序-程序管理-SD卡中,里面有支持移动到SD卡的软件列表,点击你要移动的软件,选择移动到SD卡选项即可!
也可以安装安卓优化大师等软件,使用程序整理功能一键移动到SD。
别外下载管理器下载的软件都是保存在SD卡中,miui会自动为你归类的哦!一般通过浏览器下载的保存在SD卡下miui\download里面,主题管理器下载的保存在MIUI\theme等等。当然每周的OTA ROM保存在SD下的downloaded_rom文件夹
小米手机团队
经验2770 米
在线时间207 小时
版本V7.3.1.0.LHMCNDD
积分 3459, 距离下一级还需 1541 积分
积分 3459, 距离下一级还需 1541 积分
机型红米Note2 移动/标准
签到次数39
MIUI版本V7.3.1.0.LHMCNDD
小米手机内置了4G ROM,用户可用3.05G左右,所以能安装很多软件哦!而且安装在手机中能避免很多兼容性的问题,并不需要刻意安装到SD卡中。
如果你一定要移动到SD卡中,可以打开系统设置-程序-程序管理-SD卡中,里面有支持移动到SD卡的软件列表,点击你要移动的软件,选择移动到SD卡选项即可!
也可以安装安卓优化大师等软件,使用程序整理功能一键移动到SD。
别外下载管理器下载的软件都是保存在SD卡中,miui会自动为你归类的哦!一般通过浏览器下载的保存在SD卡下miui\download里面,主题管理器下载的保存在MIUI\theme等等。当然每周的OTA ROM保存在SD下的downloaded_rom文件夹
经验5772 米
在线时间397 小时
版本V8.2.1.0.KHCCNDL
积分 7036, 距离下一级还需 12964 积分
积分 7036, 距离下一级还需 12964 积分
机型红米手机1S WCDMA 3G版
MIUI版本V8.2.1.0.KHCCNDL
不赞同你这样做,会拖慢手机运行速度!
下雨天快离去吧
经验324 米
在线时间7 小时
版本3.9.13
积分 455, 距离下一级还需 45 积分
积分 455, 距离下一级还需 45 积分
机型小米手机1/1S
MIUI版本3.9.13
MIUI 3000万
MIUI 3000万发烧友纪念勋章
MIUI 2000万
MIUI 2000万发烧友纪念勋章
小米手机1终身荣誉勋章
小米手机1终身荣誉勋章
MIUI三周年
MIUI三周年纪念勋章
已关注微信
已关注极客秀微信
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI 100周
100周发布纪念勋章
小米手机元器件合体活动勋章
小米求合体勋章
1000万用户纪念勋章
MIUI1000万用户纪念勋章
MIUI 7纪念勋章
解答组专属勋章
解答组专属勋章
MIUI五周年
MIUI五周年纪念勋章
小米平板首发纪念勋章
小米平板首发纪念勋章
小米手机3终身荣誉勋章
小米手机3终身荣誉勋章
小米手机2终身荣誉勋章
小米手机2终身荣誉勋章
百万壁纸评审纪念勋章
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号

我要回帖

更多关于 sd卡下载歌曲 的文章

 

随机推荐