android从服务器上下载文件详解.docx

上传人:b****5 文档编号:8520091 上传时间:2023-01-31 格式:DOCX 页数:17 大小:180.32KB
下载 相关 举报
android从服务器上下载文件详解.docx_第1页
第1页 / 共17页
android从服务器上下载文件详解.docx_第2页
第2页 / 共17页
android从服务器上下载文件详解.docx_第3页
第3页 / 共17页
android从服务器上下载文件详解.docx_第4页
第4页 / 共17页
android从服务器上下载文件详解.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

android从服务器上下载文件详解.docx

《android从服务器上下载文件详解.docx》由会员分享,可在线阅读,更多相关《android从服务器上下载文件详解.docx(17页珍藏版)》请在冰豆网上搜索。

android从服务器上下载文件详解.docx

android从服务器上下载文件详解

Android从服务上下载文件

首先在电脑上配置tomcat,webapps目录下新建mp3文件夹,

截图

首先我们通过SAX解析resources.xml获取歌曲信息。

启动Tomcat访问一下服务器地址http:

//210.**.**.**:

8080/mp3/resources.xml

210.**.**.**是我的IP,把这里改成自己的IP

本来下载是一个耗时的东西,需要另外开启一个线程或则service去下载,由于这里就在本人的电脑上测试

就在主线程中下载了

Info.java

packagerw.down;

publicclassInfo{

intid;

StringnameString;

/**

*@returntheid

*/

publicintgetId(){

returnid;

}

/**

*@paramidtheidtoset

*/

publicvoidsetId(intid){

this.id=id;

}

/**

*@returnthenameString

*/

publicStringgetNameString(){

returnnameString;

}

/**

*@paramnameStringthenameStringtoset

*/

publicvoidsetNameString(StringnameString){

this.nameString=nameString;

}

/*(non-Javadoc)

*@seejava.lang.Object#toString()

*/

@Override

publicStringtoString(){

return"info[id="+id+",nameString="+nameString+"]";

}

}

infoHandle.java

packagerw.down;

importjava.util.List;

importorg.xml.sax.Attributes;

importorg.xml.sax.SAXException;

importorg.xml.sax.helpers.DefaultHandler;

importAndroid.util.Log;

publicclassinfoHandleextendsDefaultHandler{

privateInfoMp3_info;

privateListList_Mp3_Infos;

privateStringpreString;

publicinfoHandle(){

super();

}

publicinfoHandle(Listlist_Mp3_Infos){

super();

List_Mp3_Infos=list_Mp3_Infos;

}

@Override

publicvoidstartDocument()throwsSAXException{

//TODOAuto-generatedmethodstub

super.startDocument();

}

@Override

publicvoidstartElement(Stringuri,StringlocalName,StringqName,

Attributesattributes)throwsSAXException{

//TODOAuto-generatedmethodstub

preString=localName;

if(preString.equals("resource")){

Mp3_info=newInfo();

}

super.startElement(uri,localName,qName,attributes);

}

publicvoidendElement(Stringuri,StringlocalName,StringqName)

throwsSAXException{

//TODOAuto-generatedmethodstub

preString="";

Log.i("endElement_localName-------->",localName);

if(localName.equals("resource")){

List_Mp3_Infos.add(Mp3_info);

}

super.endElement(uri,localName,qName);

}

@Override

publicvoidcharacters(char[]ch,intstart,intlength)

throwsSAXException{

//TODOAuto-generatedmethodstub

StringdateString;

dateString=newString(ch,start,length);

if(preString.equals("id")){

Mp3_info.setId(Integer.parseInt(dateString));

Log.i("id--------->",dateString);

}elseif(preString.equals("mp3.name")){

Mp3_info.setNameString(dateString);

Log.i("mp3.name--------->",dateString);

}

super.characters(ch,start,length);

}

@Override

publicvoidendDocument()throwsSAXException{

//TODOAuto-generatedmethodstub

super.endDocument();

}

}

DonwnFileActivity.java

packagerw.down;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.OutputStream;

import.HttpURLConnection;

import.MalformedURLException;

import.URL;

importjava.util.ArrayList;

importjava.util.Iterator;

importjava.util.List;

importjavax.xml.parsers.ParserConfigurationException;

importjavax.xml.parsers.SAXParser;

importjavax.xml.parsers.SAXParserFactory;

importorg.apache.http.HttpConnection;

importorg.apache.http.message.BufferedHeader;

importorg.xml.sax.InputSource;

importorg.xml.sax.SAXException;

importorg.xml.sax.XMLReader;

importorg.xmlpull.v1.XmlPullParser;

importorg.xmlpull.v1.XmlPullParserException;

importorg.xmlpull.v1.XmlPullParserFactory;

importandroid.app.Activity;

importandroid.app.ProgressDialog;

importandroid.content.Intent;

importandroid.content.res.AssetManager.AssetInputStream;

importandroid.os.Bundle;

importandroid.os.Environment;

importandroid.util.Log;

importandroid.view.MenuItem;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.AdapterView;

importandroid.widget.AdapterView.OnItemClickListener;

importandroid.widget.ArrayAdapter;

importandroid.widget.Button;

importandroid.widget.ListAdapter;

importandroid.widget.ListView;

importandroid.widget.SimpleAdapter;

importandroid.widget.TextView;

importandroid.widget.Toast;

publicclassDownFileActivityextendsActivity{

/**Calledwhentheactivityisfirstcreated.*/

privateButtonbutton;

privateListViewlistView;

privateListlist=newArrayList();

privateArrayAdapteradapter1;

privateListmusicnameList;

privateIntentservice;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

service=newIntent(this,DownService.class);

button=(Button)findViewById(R.id.button1);

listView=(ListView)findViewById(R.id.listView1);

button.setOnClickListener(newMybutton());

}

classMybuttonimplementsOnClickListener{

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

button.setText("刷新列表");

musicnameList=newArrayList();

ListlInfos=parseXML();

list.clear();

adapter1=newArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,list);

listView.setAdapter(adapter1);

for(Iteratoriterator=lInfos.iterator();iterator.hasNext();){

Infoinfo=(Info)iterator.next();

musicnameList.add(info.getNameString());

list.add(info.getId()+""+info.getNameString());

}

adapter1=newArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,list);

listView.setAdapter(adapter1);

listView.setOnItemClickListener(newItemLitener());

}

}

privateListparseXML()

{

Listinfos=null;

SAXParserFactoryfactory=SAXParserFactory.newInstance();

try{

URLurl=newURL("http:

//210.30.12.34:

8080/mp3/resources.xml");

HttpURLConnectionconnection=(HttpURLConnection)url.openConnection();

if(connection.getReadTimeout()==4){

Toast.makeText(getApplicationContext(),"请求超时",Toast.LENGTH_LONG).show();

returnnull;

}

InputStreaminputStream2=connection.getInputStream();

SAXParserparser=factory.newSAXParser();

XMLReaderreader=parser.getXMLReader();

infos=newArrayList();

reader.setContentHandler(newinfoHandle(infos));

reader.parse(newInputSource(inputStream2));

}catch(ParserConfigurationExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(SAXExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(MalformedURLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returninfos;

}

privateclassItemLitenerimplementsOnItemClickListener{

@Override

publicvoidonItemClick(AdapterView

>arg0,Viewarg1,intarg2,longarg3){

//TODOAuto-generatedmethodstub

Toast.makeText(getApplicationContext(),musicnameList.get(arg2).toString(),Toast.LENGTH_LONG).show();

StringdownUrlString="http:

//210.30.12.34:

8080/mp3/"+musicnameList.get(arg2).toString();

StringsdcardSave="DownFile";

Stringfilename=musicnameList.get(arg2).toString();

OutputStreamoutputStream=null;

HttpURLConnectionconnection;

/*

*1.在AndroidMainfest.xml中进行权限配置

*

name="android.permission.WRITE_EXTERNAL_STORAGE"/>

*取得写入SDCard的权限

*2.取得SDCard的路径:

Environment.getExternalStorageDirectory()

*3.检查要保存的文件上是否已经存在

*4.不存在,新建文件夹,新建文件

*5.将input流中的信息写入SDCard

*6.关闭流

*/

StringSDcardPath=Environment.getExternalStorageDirectory()+"";

StringpathString=SDcardPath+"/"+sdcardSave+"/"+filename;

Filefile=newFile(pathString);

startService(service);

try{

connection=(HttpURLConnection)newURL(downUrlString).openConnection();

InputStreaminputStream=connection.getInputStream();

if(!

file.exists()){

newFile(SDcardPath+"/"+sdcardSave).mkdir();

}

File[]filelist=newFile(SDcardPath+"/"+sdcardSave).listFiles();

for(inti=0;i

if(filelist[i].getName().equals(filename)){

Toast.makeText(getApplicationContext(),filename+"已经存在",Toast.LENGTH_LONG).show();

return;

}

}

file.createNewFile();

System.err.println("开始下载");

outputStream=newFileOutputStream(file);

byte[]buffer=newbyte[4*1024];

while((inputStream.read(buffer))!

=-1){

outputStream.write(buffer);

}

outputStream.flush();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

try{

outputStream.close();

Toast.makeText(getApplicationContext(),"下载成功",Toast.LENGTH_LONG).show();

System.err.println("下载完成");

//progressDialog.dismiss();

}catch(Exceptione2){

//TODO:

handleexception

Toast.makeText(getApplicationContext(),"下载失败",Toast.LENGTH_LONG).show();

//progressDialog.cancel();

}

}

}

}

}

DownService.java

packagerw.down;

importAndroid.app.Service;

importandroid.content.Intent;

importandroid.os.IBinder;

importandroid.widget.Toast;

publicclassDownServiceextendsService{

@Override

publicIBinderonBind(Intentarg0){

//TODOAuto-generatedmethodstub

returnnull;

}

publicvoidonCreate(){

//TODOAuto-generatedmethodstub

super.onCreate();

}

publicvoidonDestroy(){

//TODOAuto-generatedmethodstub

super.onDestroy();

}

publicvoidonStart(Intentintent,intstartId){

//TODOAuto-generatedmethodstub

Toast.makeText(getApplicationContext

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1