文件下载:1、文本文件下载 2、其他类型文件下载
文本下载步骤:
1.首先就是取得与服务器的连接,通过要下载的文本文件URL,创建一个URL对象
1.首先判断文件是否存在,若不存在则继续
2.从文件的URL中获取InputStream
3.利用OutputStream写入文件,写入结束清除缓存OutputStream.flush();
文本下载步骤:
1.首先就是取得与服务器的连接,通过要下载的文本文件URL,创建一个URL对象
2.通过URL对象,创建一个HttpURLConnection对象
3.得到InputStream
4.从InputStream当中读取数据
private URL url = null;
public String download(String urlStr){
StringBuffer sb = new StringBuffer();
String line = null;
BufferedReader buffer = null;
try{
url = new URL(urlStr);
HttpURLConncetion urlConn = (HttpURLConnection)url.openConnection();
buffer = newBufferedReader(new InputStreamReader(urlConn.getInputStream()));
while((line = buffer.readline()) != null){
sb.append(line);
}
} catch(Exception e){
e.printStackTrace();
}finally{
try {
buffer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return sb.toString();
}
其他类型文件的下载步骤:
1.首先判断文件是否存在,若不存在则继续
2.从文件的URL中获取InputStream
3.利用OutputStream写入文件,写入结束清除缓存OutputStream.flush();
public File write2SDFromInput(String path,String fileName,InputStream input){
File file = null;
OutputStream output = null; //用InputStream接收,OutputStream写入文件
try {
creatSDDir(path);
file = creatSDFile( path + fileName);
output = new FileOutputStream(file); //创建一个向指定 File 对象表示的文件中写入数据的文件输出流。创建一个新 FileDescriptor 对象来表示此文件连接。
byte buffer [] = new byte[4 * 1024]; //以4K为单位,每4K写一次
while((input.read(buffer)) != -1){ //如果因为已经到达流末尾而没有可用的字节,则返回值 -1
output.write(buffer);
}
output.flush(); //清空一下缓存
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
output.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return file;
}