android中文件简单下载
来源:互联网 发布:数组tostring方法 编辑:程序博客网 时间:2024/05/22 03:51
在java中对于文件的下载,最基本的就是对于流的操作。当然在android中也是如此。为了进行文件的下载,构建一个简单的web项目,利用tomcat作为服务器。
这是web项目的目录结构,主要就是对1.txt文件的下载实现。
对于主界面只是简单提供了两个按键。
当点击FileLoadMp3时,会自动下载1.txt文件到指定目录。查看按键的click事件:
@Overridepublic void onClick(View v) {HttpDownload downLoad=new HttpDownload();FileUtils fileUtils=new FileUtils();String urls="http://1xx.1x.1xx.2xx:8080/RegisterUser/1.txt";try {fileUtils.write2SDFormInput("lo","1.txt", downLoad.getInputStreamFromUrl(urls));} catch (IOException e) {e.printStackTrace();}}
可以看到在响应事件中,有两个新的类,一个是HttpDownload,一个是FileUtils。对于第一个类,主要是利用他的一个方法即getInputStreamFromUrl,利用传入的url得到目标对象的输入流。
而FIleUtils则是在得到输入流的基本上,将其构造成文件,并写回到sdcard中去。
public InputStream getInputStreamFromUrl(String urls) throws IOException {URL url = new URL(urls);HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();return urlcon.getInputStream();}
很简单,利用URL可以很方便的得到对应的输入流。关键是对于异常的一些处理。从而可以增加用户体验。
public File write2SDFormInput(String path,String filename,InputStream input){File file=null;FileOutputStream fos=null;createSDDir(path);file=createFileInSDCard(filename, path);System.out.println("FileName="+file.getName());try {fos=new FileOutputStream(file);byte buffer[]=new byte[4*1024];int temp=0;while((temp=input.read(buffer))!=-1){fos.write(buffer, 0, temp);}fos.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {fos.close();} catch (IOException e) {e.printStackTrace();}}return file;}
以上方法即是将流写入到文件中去,path为路径,filename为文件名,input为输入流。
为了得到sdcard的根目录,可以采用
SDCardRoot=Environment.getExternalStorageDirectory().getAbsolutePath()+"/";
这条语句得到。如在我手机则得到/storage/sdcard0/
public File createFileInSDCard(String filename,String dir){File temp=new File(SDCardRoot+dir+File.separator+filename);try {System.out.println("createFileInSDCard---"+temp);temp.createNewFile();} catch (IOException e) {e.printStackTrace();}return temp;}public File createSDDir(String dir){File temp=new File(SDCardRoot+dir+File.separator);//System.out.println(temp.mkdirs());temp.mkdirs();return temp;}
创建目录,和文件,以供写入输入流。
最终下载成功。
程序还有诸多不完善的地方,比如文件名是以参数得到的,而不是程序自动获取。留给读者自己完善吧。
- android中文件简单下载
- android中文件下载
- Android中文件下载类封装
- Android中文件下载类封装
- .NET中文件下载
- NET中文件下载
- Web中文件下载
- . net中文件下载
- .net中文件下载
- THinkPHP中文件下载
- struts2中文件下载
- JavaWeb中文件下载
- android 解决下载时文件名中文和空格问题
- android 解决下载时文件名中文和空格问题
- Android中文件简单存储(写入 读取)
- android中文件操作的简单工具类
- Asp.Net中文件下载
- JSP中文件下载(转贴)
- 用户 'IIS APPPOOL\DefaultAppPool' 登录失败。
- 如何使用github
- MySQL中文乱码问题解决
- stevens
- S3c2440A 平台HIVE 注册表+binfs 的实现
- android中文件简单下载
- 数学学习小记(二) 组合数求模:Lucas 定理 LightOJ 1067 + Hdu 3037
- 深入浅出之正则表达式(一)
- 打印字符频度直方图--C语言实现
- Set集合简单使用
- 深入浅出之正则表达式(二)
- linux 的相关命令
- 集合,list,set,map
- 10个基于Web的开源项目管理系统