/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.portal.engine.releasehtml;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import com.jinhe.tss.core.Config;
public class IssueHelper {
private static Logger log = Logger.getLogger(IssueHelper.class);
/**
* 创建文件夹,如果父级目录不存在,则创建父级目录
* @param file
*/
static void makeDir(File file){
List<File> parents = new ArrayList<File>();
File temp = file.getParentFile();
while(!temp.exists()){
parents.add(temp);
temp = temp.getParentFile();
}
for(int i = parents.size() - 1; i >= 0; i--){
parents.get(i).mkdir();
}
if( !file.exists() ) {
file.mkdir();
}
}
/**
* 将网络上的资源保存到本机。
*
* 此方法只能用于HTTP协议,不适用于FTP协议
*
* @param pageUrl
* @param fileName
* @return
*/
public static boolean saveUrlAsLocalFile(String pageUrl, String fileName) {
if(pageUrl == null) return false;
if(pageUrl.indexOf("?") >= 0)
pageUrl = pageUrl + "&isRobot=true";
else
pageUrl = pageUrl + "?isRobot=true";
makeDir(new File(fileName).getParentFile());
InputStream in = null;
OutputStream out = null;
try {
URL url = new URL(pageUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.addRequestProperty("isRobot", Config.TRUE); //设置为发布机器人访问,TODO 这种方式在WebLogic下获取不到
in = new DataInputStream(conn.getInputStream());
out = new DataOutputStream(new FileOutputStream(fileName));
byte[] buffer = new byte[4096];
int count = 0;
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
}
} catch (Exception e) {
log.error("将页面(" + pageUrl + ")保存到文件(" + fileName + ")时出错了。", e);
return false;
} finally {
try {
if(out != null) out.close();
if(in != null) in.close();
} catch (IOException e) {
}
}
return true;
}
}