依据音乐文件和LRC文件的绝对路径下载到sdcard指定目录中
根据音乐文件和LRC文件的绝对路径下载到sdcard指定目录中
下载歌词时要注意inputStream的转码,由于服务器中的xml文件是用gb2312编码,所以应按照原来的格式读进来
其中创建文件和文件目录代码如下:
[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
/** * 下载音乐文件到指定目录 * @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