java文件下載,上傳,解壓方法

一、文件下載(親測可用)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;
    }
}
相關文章
相關標籤/搜索