android利用http协议下载网页内容到指定位置的方法
来源:互联网 发布:psd传感器 单片机 编辑:程序博客网 时间:2024/06/02 00:28
源码如下:
public class LoadTestActivity extends Activity {private TextView tv;private URL url; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); String urlStr="http://www.eoeandroid.com/thread-108676-1-1.html"; tv.setText(getWebText(urlStr)); //loadToSdcard(urlStr,"/TTTTT","Ada的文件.txt"); loadToLocation(urlStr,"Abc.txt"); } //初始化组件 public void init(){ tv=(TextView)findViewById(R.id.tv); } //获取文件流 private InputStream getInputStream(String urlStr){ InputStream is = null; try {url=new URL(urlStr);HttpURLConnection conn=(HttpURLConnection)url.openConnection();conn.setRequestMethod("POST");conn.setConnectTimeout(5000);conn.connect();is=conn.getInputStream();} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return is; } //获取网页文本内容 private String getWebText(String urlStr){ InputStream is=getInputStream(urlStr); StringBuffer sb=new StringBuffer(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String s=""; try {while((s=br.readLine())!=null){sb.append(s);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();Log.e("TAG", "流文件读写错误");} finally{ try {br.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} } return sb.toString(); } //下载文件 private void downloader(InputStream is,String path,String filename){ String filepath=null; if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ filepath=Environment.getExternalStorageDirectory()+path; } else{ Toast.makeText(LoadTestActivity.this, "SDCard异常,请检查SDCard是否安装正确!", Toast.LENGTH_LONG).show(); } if(!filepathExist(filepath)){ createFilepath(filepath); } if(!fileExist(filepath+"/"+filename)){ createFile(is,filepath,filename); } } //判断文件路径是否存在 private boolean filepathExist(String filepath){ File file=new File(filepath); return file.exists(); } //创建文件路径 private void createFilepath(String filepath){ File file=new File(filepath); file.mkdirs(); } //判断文件是否存在 private boolean fileExist(String filename){ return filepathExist(filename); } //创建文件 private void createFile(InputStream is,String filepath,String filename){ File file=new File(filepath+"/"+filename); OutputStream os=null; try {os=new FileOutputStream(file);int len=0;byte[] buffer=new byte[1024];while((len=is.read(buffer))!=-1){os.write(buffer, 0, len);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} } //下载文件到SDCard private void loadToSdcard(String url,String filepath,String filename){ InputStream is=getInputStream(url); downloader(is,filepath,filename); } //下载文件到应用所在的本地目录 private void loadToLocation(String urlStr,String filename){ InputStream is=getInputStream(urlStr); OutputStream os=null; try {os=this.openFileOutput(filename, Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE);byte[] buffer=new byte[1024];int len=0;while((len=is.read(buffer))!=-1){os.write(buffer, 0, len);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} } }
不要忘记了在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
注意:
一、loadToLocation(String urlStr,String filename)这个方法是把下载的内容放到以filename命名的文件当中,这个以filename命名的文件被放在应用所在的本地目录,可以通过以下方法来找到并查看它当中的内容:
在Eclipse中按以下路径进行查找:Window---Open perspective---Hierarchy View---File Explorer---data---data---<package name,该程序所在包的包名>---files
通过上面的步骤就可以找到该文件了。
二、loadToSdcard(String url,String filepath,String filename)这个方法是把下载的内容放到sdcard中的以filepath命名的文件夹中的那个以filename命名的文件当中。可以打开android手机当中的“文件管理器”---sdcard---以filepath命名的文件夹,找到以filename命名的文件来查看所下载的内容。
- android利用http协议下载网页内容到指定位置的方法
- android利用Http协议获取网页文本内容的方法
- 跳转到网页的指定位置
- 【Android学习】利用HTTP协议下载
- Android获取指定URL的网页内容
- 需求(Java);利用Jsoup架包获取指定网页的全部图片,并自动下载到指定文件夹中
- Http 下载文件,指定下载位置
- python插入内容到指定文件的位置
- 利用urllib2通过指定的URL抓取网页内容
- iframe调用指定网页的特定位置方法
- 利用HTTP协议下载附件
- 控制div跳转到指定位置的若干方法&控制页面定位到指定位置
- 鼠标移动到指定位置显示内容
- 网页打开自己加载到指定位置
- Android之基于HTTP协议的下载
- Android之基于HTTP协议的下载
- Android之基于HTTP协议的下载
- Android之基于HTTP协议的下载
- iOS 4层结构(iOS技术概要)—— Media 层(二)
- coco2dx添加类报错
- 自定义UITabelViewCell
- flash swf、mc播放完毕的检测和判断
- 2014校园招聘各大公司笔试题目
- android利用http协议下载网页内容到指定位置的方法
- C 语言字符串结束符 '\0'
- 一道关于排序的算法题
- Android 如何添加一种锁屏方式
- 网页设计配色应用实例剖析—蓝色系
- CSDN开放平台概述
- 【重点】static是何方神圣
- 简单安装Oracle网格控制器agent端
- 【代码】用div+css实现 在新窗口中打开指定的DIV标签下链接