亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

網絡文件或字符串獲取類

張軍 5945 0
package zj.io.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import zj.common.exception.ServiceException;
import zj.java.util.JavaUtil;

/**
 * 網絡文件或字符串獲取類<br>
 * 
 * @version 1.00 (2011.12.02)
 * @author 張軍 {@link <a target=_blank href="http://m.eyofj.com">張軍個人網站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public class NetWorkUtil implements Serializable {
	private static final long serialVersionUID = 1L;
	// private transient static final Logger logger = Logger.getLogger(NetWorkUtil.class);

	/**
	 * 保存網絡文件
	 * 
	 * @param urlAddr
	 *            遠程地址
	 * @param localAddr
	 *            本地地址
	 * @throws Exception
	 */
	public static void writeFileToLocalByURL(String urlAddr, String localAddr) {
		BufferedOutputStream bos = null;
		BufferedInputStream fis = null;
		try {
			// 以流的形式下載文件。
			URL urlObj = new URL(urlAddr);
			URLConnection uc = urlObj.openConnection();
			fis = new BufferedInputStream(uc.getInputStream());
			// 取得目標文件路徑
			if (localAddr == null || localAddr.equals("")) {
				String[] paths = FileUtil.getFileNameExtension(urlAddr);
				if (paths.length > 2) {
					localAddr = paths[1] + paths[2];
				} else {
					File file = new File(urlAddr);
					localAddr = file.getName();
				}

			}
			// byte[] buffer = new byte[fis.available()];
			// fis.read(buffer);
			File fileDesc = new File(localAddr);

			String[] extension = FileUtil.getFileNameExtension(localAddr);
			File extensionFile = new File(extension[0]);
			if (!extensionFile.exists()) {
				extensionFile.mkdirs();
			}
			bos = new BufferedOutputStream(new FileOutputStream(fileDesc));
			int blen = 1024 * 5;
			byte[] b = new byte[blen];
			int len = 0;
			while ((len = fis.read(b, 0, blen)) != -1) {
				bos.write(b, 0, len);
			}
			bos.flush();
			// logger.info("下載【" + urlAddr + "】->【" + localAddr + "】成功");
		} catch (Exception e) {
			throw new ServiceException(e);
		} finally {
			if (bos != null) {
				try {
					bos.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			if (fis != null) {
				try {
					fis.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}

		// // 根據String形式創建一個URL對象,
		// URL url = new URL(urlAddr);
		// // 實列一個URLconnection對象,用來讀取和寫入此 URL 引用的資源
		// URLConnection con = url.openConnection();
		// // 獲取一個輸入流
		// InputStream is = con.getInputStream();
		// BufferedInputStream bis = new BufferedInputStream(is);
		// // 實列一個輸出對象
		// FileOutputStream fos = new FileOutputStream(fileAddr);
		// BufferedOutputStream bos = new BufferedOutputStream(fos);
		// // 用來接收每次讀取的字節個數
		// int length = -1;
		// // 一個byte[]數組,一次讀取多個字節
		// byte[] buffer = new byte[7092];
		// // 循環判斷,如果讀取的個數b為空了,則is.read()方法返回-1,具體請參考InputStream的read();
		// while ((length = bis.read(buffer, 0, 7092)) != -1) {
		// // 將對象寫入到對應的文件中
		// bos.write(buffer, 0, length);
		// }
		// // 刷新流
		// bos.flush();
		// fos.flush();
		// // 關閉流
		// bos.close();
		// fos.close();
		// bis.close();
		// is.close();
	}

	/**
	 * 獲取網絡字符串 編碼默認GB2312
	 * 
	 * @param url
	 *            遠程地址
	 * @return 遠程地址響應結果
	 */
	public static String getStringByURL(String url) {
		return getStringByURL(url, "GB2312");
	}

	/**
	 * 獲取網絡字符串 編碼默認GB2312
	 * 
	 * @author zhangjun
	 * @param url
	 *            遠程地址
	 * @param encoding
	 *            網頁的編碼集
	 * @return 遠程地址響應結果
	 */
	public static String getStringByURL(String url, String encoding) {
		StringBuffer sb = new StringBuffer();
		// 建立文件寫入流
		// 建立緩沖寫入流
		BufferedReader br = null;
		try {
			// 建立網絡連接
			URL urlObj = new URL(url);
			// 打開網絡連接
			URLConnection uc = urlObj.openConnection();
			// uc.setRequestProperty("User-Agent", "java");
			// 建立文件寫入流
			// 建立緩沖寫入流
			br = new BufferedReader(new InputStreamReader(uc.getInputStream(), encoding));
			String sLine = null;
			sLine = br.readLine();
			sLine = JavaUtil.readFirstLine(sLine);
			if (sLine != null) {
				sb.append(sLine);
				while ((sLine = br.readLine()) != null) {
					// 一邊讀,一邊寫
					// sb.append(sLine + System.getProperty("line.separator"));
					sb.append(sLine);
				}
			}
		} catch (MalformedURLException e) {
			throw new ServiceException("連接網絡失敗", e);
		} catch (IOException e) {
			throw new ServiceException("打開網絡連接失敗", e);
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return sb.toString();
	}

}



更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天射天天搞 | 久久精品这里热有精品 | 国产不卡在线观看 | 色中色资源站 | 久久精品国产大片免费观看 | 久久99久久精品97久久综合 | 999视频在线 | 国内揄拍国内精品久久 | 91亚洲区国产区精品区 | 色老头久久久久久久久久 | 成人中文字幕一区二区三区 | 亚洲欧美日韩中文字幕在线 | 精品一成人岛国片在线观看 | 伊人精品视频在线 | 日韩欧美国产卡通动漫 | 神马不卡伦影视 | 久久精品国产精品亚洲红杏 | 亚洲天天网综合自拍图片专区 | 欧美影院一区二区三区 | 欧美特黄a级猛片a级 | 国产香蕉国产精品偷在线观看 | 亚洲成色在线综合网站 | 国产精品福利资源在线 | 亚洲欧美日韩成人网 | 国产高清天干天天视频 | 久久精品无码一区二区日韩av | 一级毛片aa高清免费观看 | 成人三级毛片 | 亚洲国产爱久久全部精品 | 天天上天天干 | 老子影院午夜伦手机不四虎 | 久久午夜一区二区 | 免费观看a级完整视频 | 夜夜艹日日干 | 草的我好爽的网站 | 国产精品国产色综合色 | 中文字幕一区二区三 | 国产成人a毛片在线 | 午夜久久久久久久 | 日韩一区二区三区视频在线观看 | 夜夜精品视频 |