`

根据音乐文件和LRC文件的绝对路径下载到sdcard指定目录中

 
阅读更多
/**
	 * 下载音乐文件到指定目录
	 * @param musicPath
	 * @param musicName
	 * @param singerName
	 */
	public void downloadMusic(final String musicPath, String musicName,
			String singerName ) {
		
		String dir = "ccpod/downloadMusic";
		final String filePath = "/sdcard/ccpod/downloadMusic/" + 
			musicName +"-"+ singerName +".mp3";
		FileService fileService = new FileService();
		fileService.createFileDir(dir);	
		fileService.createFile(filePath);
		
		Runnable r = new Runnable(){
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				int count;
				try {
				URL url = new URL(musicPath);
				InputStream input = new BufferedInputStream(url.openStream());
				OutputStream output = new FileOutputStream(filePath);
				byte data[] = new byte[1024];
				while ((count = input.read(data)) != -1) {
					output.write(data, 0, count);
					System.out.println(count);
				}
				output.flush();
				output.close();
				input.close();
				} catch (Exception e) {
				Log.e("error",e.getMessage().toString());
				System.out.println(e.getMessage().toString());
				}
			}
		};
		new Thread(r).start();
	}




/**
	 * 下载歌词文件到指定目录
	 * @param lrcPath
	 * @param musicName
	 * @param singerName
	 */
	public void downloadLyric(final String lrcPath, String musicName,
			String singerName) {

		
		String dir = "ccpod/lyric";
		final String filePath = "/sdcard/ccpod/lyric/" + musicName + "-"
				+ singerName + ".lrc";
		FileService fileService = new FileService();
		fileService.createFileDir(dir);
		fileService.createFile(filePath);

		Runnable r = new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				StringBuffer sb = new StringBuffer();
				try {
					URL url = new URL(lrcPath);
					InputStream input = new BufferedInputStream(
							url.openStream());
					BufferedReader br = new BufferedReader(  
                            new InputStreamReader(input,"GB2312")); 
					
					Writer writer = new OutputStreamWriter(new FileOutputStream(filePath));
					String data = "";  					  
                    while ((data = br.readLine()) != null) {  
                        sb.append(data+ "\r\n");  
                    }
                    writer.write(sb.toString());
					writer.close();
					input.close();
				} catch (Exception e) {
					Log.e("error", e.getMessage().toString());
				}
			}
		};
		new Thread(r).start();
	}


下载歌词时要注意inputStream的转码,由于服务器中的xml文件是用gb2312编码,所以应按照原来的格式读进来


其中创建文件和文件目录代码如下:
FileService.java
public boolean createFileDir(String dirName) {
		dirName = Environment.getExternalStorageDirectory() + "/" + dirName;
		File dir = new File(dirName);
		if (dir.exists()) {
			return false;
		}
		if (!dirName.endsWith("/")) {
			dirName += File.separator;
		}
		if (dir.mkdirs()) {
			return true;
		} else
			return false;
	}
	
	public boolean createFile(String fileName){
		File file = new File(fileName);
		if(file.exists()){
			System.out.println("创建单个文件:"+ fileName + "失败,目标文件已存在");
			return false;
		}
		if(!file.getParentFile().exists()){
			System.out.println("目标文件所在目录不存在,准备创建它");
			return false;
		}
		try {
			if(file.createNewFile()){
				return true;
			}else{
				return false;
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}



[img]

[/img]

参考资料:
Android中文乱码彻底解决
http://www.iteye.com/topic/509046


Android 中下载文件到sdcard和进度条小结
http://www.linuxidc.com/Linux/2011-08/40941.htm


Android中的自动下载歌词
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=61595
分享到:
评论

相关推荐

    预置一些文件到系统sdcard目录.txt

    预置一些文件到系统sdcard目录

    Android 文件 内存目录获取 sdcard目录获取

    通过以上方法,开发者可以有效地在Android 2.3及其后续版本中获取和管理内存目录和SDCard目录,为用户提供安全、便捷的文件存储服务。在实际开发中,还需关注Android系统的更新和最佳实践,以保持代码的兼容性和效率...

    播放SDcard的全部音频文件.

    在Android平台上,播放SDcard(外部存储)中的所有音频文件是一项常见的任务,尤其对于音乐播放器或者媒体应用来说。这个任务涉及到多个知识点,包括文件系统操作、多媒体处理、以及Android的权限管理。以下是对这些...

    android webview实现自身下载文件自动保存SDCARD

    现在,当用户点击WebView中的文件下载链接时,系统会自动将其保存到SDCARD的指定目录,并且这个过程对用户是透明的,实现了静默下载。 在实际项目中,我们可能还需要处理一些额外的逻辑,例如监听下载进度、处理...

    android读取sdcard路径下的文件的方法

    代码如下:// 读取sdcard文件private void ...// sdcard下子目录文件String ret = “”;try {FileInputStream fis = new FileInputStream(fileName);int len = fis.available();byte []buffer = new byte[len]; fis

    安卓模拟器sdcard.img文件打开修改

    这个文件通常位于Android SDK的`<Android_sdk_path>\system-images\`目录下,根据不同的Android版本和API级别,其路径会有所变化。 2. **打开sdcard.img文件** 要打开这个文件,我们通常需要使用特定的工具,例如`...

    检测当前系统中是否存在sdcard,并在sdcard中创建一个文件

    综上所述,检测Android系统中是否存在SDcard并创建文件的过程涉及到Android的存储权限管理、SDcard状态检查、文件系统的操作以及Java IO流的使用。在开发过程中,要遵循Android的最佳实践,确保应用在不同版本的...

    android 写入SDcard 文件

    在Android平台上,对SDCard(外部存储)进行文件操作是应用程序与用户交互的重要部分,尤其对于需要存储大量数据或媒体文件的应用来说。本教程将详细解释如何在Android中读写SDCard文件,非常适合初学者入门。 首先...

    android打开sdcard目录

    / 参数说明 // context:上下文 // dialogid:对话框ID // title:对话框标题 // callback:一个传递Bundle参数的回调接口 ... // 其他的直接根据后缀进行索引,比如.wav文件图标的索引为"wav

    Android7.0 Intent打开文件管理器 获取文件真实路径

    Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。

    文件从sd卡某个目录复制到另一个目录

    例如,对于SD卡中的文件,路径通常以`/storage/emulated/0/`或`/mnt/sdcard/`开头。 3. **异常处理**:上述代码中包含了对`IOException`的捕获,这是处理文件操作中可能出现的错误,如文件不存在、无权限或磁盘满等...

    Android 手机sdcard目录或文件的拷贝 移动 删除 递归

    一个关于文件操作的静态工具类 实现手机SD卡目录或文件的拷贝 移动 删除 递归 Demo中有详细注释 在进行Demo测试时 建议先把测试的文件备份一下在测试 否则删除就找不回了 具体可见我博客...实现手机SD卡目录或文件的...

    Android 获取OTG U盘路径 sdcard路径

    在Android系统中,获取OTG(On-The-Go)U盘的路径以及内部或外部SD卡的路径是进行文件操作的基础。这篇详细解释将围绕如何在Android M及以上版本的设备上实现这一功能,并提供一个简单实用的代码示例。 首先,我们...

    Android TV USB路径或手机SDCARD路径获取

    本文将深入探讨如何在Android TV和手机上获取SDCARD(内部或外部)以及USB设备的路径。 首先,我们要明白在Android中,存储路径的管理是基于Android的存储模型。自Android 4.4(KitKat)版本开始,引入了“可卸载的...

    android在Sdcard中上传中文文件镜像

    在Android系统中,将中文文件镜像上传到SD卡是一个常见的需求,特别是在处理系统更新、应用安装或数据备份时。本文将深入探讨如何在Android设备上实现这一操作,重点介绍与"android"、"镜像"、"中文"以及"UltraISO...

    android模拟器中使用SDCard

    接着,当文件成功推送到模拟器的sdcard后,可以在模拟器中使用DevTools中的MediaScanner服务来扫描媒体文件,从而使得新增的媒体文件能够在模拟器上的音乐播放器中被识别和播放。此外,也可以通过在模拟器上执行adb ...

    Android文件内部存储和SDCard存储

    压缩包中的资源可能包含示例代码,用于演示如何在Android应用中实现内部存储和SDCard存储的文件操作,包括创建、读取、写入和删除文件。通过阅读和理解这些代码,开发者可以更好地掌握Android文件存储的实践技巧。 ...

    Android读取assets与sdcard中的ini文件与图片

    在Android应用开发中,有时我们需要从应用程序的内部资源或外部存储空间读取各种类型的文件,如配置文件(如ini)和图像资源。本教程将详细讲解如何使用Android原生API来处理这两种情况。 首先,让我们关注如何从`...

    sdcard文件读写案例-ES文件浏览器

    `getExternalStorageDirectory()`返回根目录,`getExternalStoragePublicDirectory(String type)`则可获取特定类型的公共目录,如下载、音乐等。 3. **文件操作API**:`java.io.File`类是进行文件操作的核心,包括...

    六、把文件存放在SDCard

    在Android系统中,外部存储设备通常被称为SDCard(尽管它可能并不一定是物理的SD卡),是用户存储多媒体文件、应用数据和其他大文件的理想位置。本文将深入探讨如何在Android应用程序中将文件存放到SDCard,并提供...

Global site tag (gtag.js) - Google Analytics