您的位置:首页 > 理论基础 > 计算机网络

android获取网络数据到本地并查看

2013-06-05 11:26 302 查看
把网络上的图片数据下载到本地可以用sd卡,这个就不用说了,网上很多列子,前两天项目需要,没有sd卡,但是要把网络上的数据保存到本地并在断网的时候能继续使用

首先我们来获取网络上的数据
1. //path为网络地址这儿可以是任何,本列子只说读取图片还有html
2. URL url = new URL(path);
3. //
记住使用的是HttpURLConnection类
4. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
5. conn.setRequestMethod("GET");
6. //
如果运行超过5秒会自动失效
7. conn.setConnectTimeout(5 * 1000);
8. //获取流
9. InputStream inStream = conn.getInputStream();
10.ByteArrayOutputStream outSteam = newByteArrayOutputStream();
11.byte[] buffer = new byte[1024];
12.int len = -1;
13.while ((len = inStream.read(buffer)) != -1) {
14.outSteam.write(buffer, 0, len);
15.}
16.outSteam.close();
17.inStream.close();
18.FileOutputStream out = new FileOutputStream(newFile(activity.getFilesDir() + "/aa.html"));
19.//把html文件通过流文件写到data文件下
20.out.write(data);
21.//
关闭流
22.out.close();
复制代码
这样网络上的html就保存到本地了,现在是在webview里读取出这个html,大家知道有sd卡可以直接用url读取html,但是data文件没有直接的路径,所以我们也采用流的方式把html读取出来
1. FileInputStream file= this.openFileInput(name);
2. //name为,你往data文件存的时候的html文件名这儿是aa.html
3. byte[] buffer = new byte[file.available()];
4. file.read(buffer);
5. file.close();
6. webview.getSettings().setSupportZoom(true);
7. webview.getSettings().setDefaultZoom(ZoomDensity.FAR);
8. webview.getSettings().setBuiltInZoomControls(true);
9. webview.getSettings().setTextSize(TextSize.NORMAL);
10.webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
11.webview.loadData(newString(buffer).replaceAll("#", "%23").
12.replaceAll("%","%25").replaceAll("\'","%27"),"text/html", "utf-8");
复制代码
这儿要说明一点,获取的html流有很多特殊符号,这儿要做一些处理,想知道为什么的话可以查看一下webview源码

如果html里面包含有图片,当你连网用webview加载了这个html那么webview会缓存这些图片,当你断网是也看以读取图片

把网络图片保存到本地也是上面的操作只是在获取时有点区别
1. FileInputStream file=activity.openFileInput("保存的图片名");
2. Bitmap bmImg = BitmapFactory.decodeStream(file);
3. newsimage.setImageBitmap(bmImg);
复制代码
由于时间关系,就只贴出了主要代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: