一、文件下載(親測可用)app
private static final int BUFFER = 2 * 1024;// 緩衝區大小(2k)
private boolean isSuccess = true;//成功標誌
public void downFile(String urlStr, String path, String fileName) { OutputStream output = null; try { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 取得inputStream,並將流中的信息寫入 String pathName = path + fileName;// 文件存儲路徑 File file = new File(pathName); InputStream input = conn.getInputStream(); if (file.exists()) { return; } else { File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } file.createNewFile();// 新建文件 output = new FileOutputStream(file); int count; byte[] buffer = new byte[2 * 1024]; while ((count = input.read(buffer)) != -1) { output.write(buffer, 0, count); } output.flush(); } output.close(); } catch (Exception e) { e.printStackTrace(); isSuccess = false; } }
二、文件上傳url
public String uploadFile(String uploadUrl, String uploadFile, String newName) { String LINE_END = "\r\n"; //數據結束標誌 String PREFIX = "--"; //數據前綴 String BOUNDARY = "*****"; //邊界標識 String resultStr = "";
try { URL url = new URL(uploadUrl); HttpURLConnection con = (HttpURLConnection) url.openConnection(); // 容許Input、Output,不使用Cache con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); // 設置傳送的method=POST con.setRequestMethod("POST");
con.setConnectTimeout(120 * 1000);// (單位:毫秒)
con.setReadTimeout(60 * 1000);// (單位:毫秒) // 設置請求屬性 con.setRequestProperty("Connection", "Keep-Alive"); con.setRequestProperty("Charset", "UTF-8"); con.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + BOUNDARY);
con.connect(); // 文件輸出流 DataOutputStream ds = new DataOutputStream(con.getOutputStream()); ds.writeBytes(PREFIX + BOUNDARY + LINE_END); ds.writeBytes("Content-Disposition: form-data; " + "name=\"file1\";filename=\"" + newName + "\"" + LINE_END); ds.writeBytes(LINE_END); // 取得文件的FileInputStream FileInputStream fStream = new FileInputStream(uploadFile); byte[] buffer = new byte[BUFFER]; int length = -1; while ((length = fStream.read(buffer)) != -1) { ds.write(buffer, 0, length); } ds.writeBytes(LINE_END); ds.writeBytes(PREFIX + BOUNDARY + PREFIX + LINE_END); fStream.close(); ds.flush(); // 取得Response內容 int resCode = con.getResponseCode(); if (resCode == 200) { InputStream is = con.getInputStream(); int ch; StringBuffer result = new StringBuffer(); while ((ch = is.read()) != -1) { result.append((char) ch); }
resultStr = result.toString(); } ds.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
return resultStr ; }
三、文件解壓(親測可用)spa
public void UnZipFolder(String zipFileString, String outPathString) { File desDir = new File(outPathString); if (!desDir.exists()) { desDir.mkdirs(); } try { @SuppressWarnings("resource") ZipFile zf = new ZipFile(zipFileString);//根據文件建立ZipFile //遍歷壓縮文件條目 for (Enumeration<?> entries = zf.entries(); entries.hasMoreElements();) { ZipEntry entry = ((ZipEntry) entries.nextElement()); //獲取條目的輸入流 InputStream in = zf.getInputStream(entry); String str = outPathString + entry.getName();//條目路徑 str = new String(str.getBytes("8859_1"), "GB2312"); File desFile = new File(str); if (!desFile.exists()) { File fileParentDir = desFile.getParentFile(); if (!fileParentDir.exists()) { fileParentDir.mkdirs(); } desFile.createNewFile();//建立新文件 } OutputStream out = new FileOutputStream(desFile); byte buffer[] = new byte[2 * 1024]; int realLength; while ((realLength = in.read(buffer)) > 0) { out.write(buffer, 0, realLength); } in.close(); out.close(); } } catch (Exception e) { e.printStackTrace(); isSuccess = false; } }