自学过程中,看到老师在app中可以下载文件,就敲了两个download的用到的两个class,日后在用的时候可以直接拿过来用。放在这里保存起来,省得以后忘了。
public class FileUtils {
private String SDPATH;
public String getSDPATH() {
return SDPATH;
}
public FileUtils() {
//得到当前外部存储设备的目录
SDPATH = Environment.getExternalStorageDirectory() + "/";
}
//在SD卡上创建文件
public File creatSDFile(String fileName) throws IOException {
File file = new File(SDPATH + fileName);
file.createNewFile();
return file;
}
//在SD卡上创建目录
public File creatSDDir(String dirName) {
File dir = new File(SDPATH + dirName);
dir.mkdir();
return dir;
}
//判断SD卡上的文件是否已经存在
public boolean isFileExist(String fileName) {
File file = new File(SDPATH + fileName);
return file.exists();
}
//将一个InputStream里面的数据写到SD卡上
public File writeSDFromImput(String path, String fileName, InputStream input) {
File file = null;
OutputStream output = null;
try {
creatSDDir(path);
File f = creatSDFile(path + fileName);
output = new FileOutputStream(f);
byte buffer[] = new byte[4 * 1024];
while ((input.read(buffer)) != -1) {
output.write(buffer);
}
file = new File(path);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
output.close();
}catch (Exception e){
e.printStackTrace();
}
}
return file;
}
}
public class HttpDownloader {
private URL url=null;
//根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容
public String download(String urlStr){
StringBuffer sb = new StringBuffer();
String line=null;
BufferedReader buffer=null;
try {
//创建一个URL对象
url=new URL(urlStr);
//创建一个http链接
HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
//使用IO流读取数据
buffer=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while((line=buffer.readLine())!=null){
sb.append(line);
}
}catch(Exception e){
e.printStackTrace();
}finally {
try {
buffer.close();
}catch (Exception e){
e.printStackTrace();
}
}
return sb.toString();
}
//该函数返回整形 -1代表下载文件出错,0代表下载文件成功,1代表文件已经存在
public int download(String urlStr,String path,String fileName){
InputStream inputStream=null;
try {
FileUtils fileUtils=new FileUtils();
if(fileUtils.isFileExist(path+fileName)){
return 1;
}else{
inputStream=getInputStreamFromUrl(urlStr);
File resultFile=fileUtils.writeSDFromImput(path,fileName,inputStream);
if(resultFile==null){
return -1;
}
}
}catch (Exception e){
e.printStackTrace();
return -1;
}finally {
try{
inputStream.close();
}catch (Exception e){
e.printStackTrace();
}
}
return 0;
}
//根据URL得到输入流
public InputStream getInputStreamFromUrl(String urlStr)
throws MalformedURLException,IOException{
url=new URL(urlStr);
HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
InputStream inputStream=urlConn.getInputStream();
return inputStream;
}
}