class TxtDownLoadOnClickListener implements View.OnClickListener{
@Override
public void onClick(View view) {
//TxtDown txtDown = new TxtDown();
//String string = txtDown.downLoad("http://dampce032.iteye.com/blog/975642");
//System.out.println(string);
new Thread(){
@Override
public void run() {
TxtDown txtDown = new TxtDown();
String string = txtDown.downLoad("http://dampce032.iteye.com/blog/975642");
System.out.println(string);
super.run();
}
}.start();
}
}
看的是Mars老师的Andriod教程, 因为教程比较早, 在文件下载的时候 出现
NullPointerException
异常, 崩掉程序。在Andriod4.0以后, 对网络的访问不能写在主线程中了。 可以在监听器中设置线程。
网络的读写要用到IO流,下面代码可以实现对string类型的读入。在Mars老师讲解时,网站用Tomcat模拟,我没弄这个,但是也没有找到TXT文件的网站,所以就直接找的随机一个网站读入, 能成功读入。听别人说用PHPStudy也能实现这个功能。
public class TxtDown {
private URL url = null;
//urlString是下载地址
public String downLoad(String urlString){
StringBuffer stringBuffer = new StringBuffer();
BufferedReader bufferedReader = null;
String line = null;
try {
//初始化URL对象
url = new URL(urlString);
// 创建http连接
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
//用IO流读取数据
bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
while ((line = bufferedReader.readLine()) != null){
stringBuffer.append(line);
}
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
return stringBuffer.toString();
}
}
另外又写了一个读入网络图片的程序, 和上面的基本上差不多,如果可能的话我再试试能不能封装成一个方法。
class JPGOnClickListener implements View.OnClickListener{
@Override
public void onClick(View view) {
//DownJPG downJPG = new DownJPG();
//downJPG.GetJPG("http://f.hiphotos.baidu.com/image/w%3D2048/sign=3b06d28fc91349547e1eef6462769358/d000baa1cd11728b22c9e62ccafcc3cec2fd2cd3.jpg");
//System.out.println("OnClick");
new Thread(){
@Override
public void run() {
DownJPG downJPG = new DownJPG();
downJPG.GetJPG("http://f.hiphotos.baidu.com/image/w%3D2048/sign=3b06d28fc91349547e1eef6462769358/d000baa1cd11728b22c9e62ccafcc3cec2fd2cd3.jpg");
System.out.println("OnClick");
super.run();
}
}.start();
}
}
public class DownJPG {
protected URL url = null;
Bitmap bitmap = null;
public Bitmap GetJPG(String urlJPG){
try {
url = new URL(urlJPG);
//使用HttpURLConnect建立连接
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoInput(true);//??以后就可以使用conn.getInputStream().read()
httpURLConnection.connect();
//get数据
InputStream inputStream = httpURLConnection.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
inputStream.close();
System.out.println("DownLoad");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
System.out.println("[getNetWorkBitmap->]MalformedURLException");
e.printStackTrace();
} catch (Exception e) {
System.out.println("[getNetWorkBitmap->]IOException");
e.printStackTrace();
}
return bitmap;
}
}
在AndriodManifest.xml文件里面要加入访问网络的权限
<!-- 访问网络的权限 --> <uses-permission android:name="android.permission.INTERNET"></uses-permission>