package com.temobi.cds.tool;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import org.slf4j.LoggerFactory;
/**
* URL标识的资源读取工具
* @author lixu
*
*/
public class URLResource {
/**
* 拷贝一个远程文件
* @param url
* @param filePath
* @throws Exception
*/
public static void copy(String url, String filePath) throws Exception {
File file = new File(filePath);
copy(url, file);
}
/**
* 拷贝一个远程文件
* @param url
* @param file 要存储到本地的文件
* @throws Exception
*/
public static void copy(String url, File file) throws Exception {
boolean ok = true;
if (!file.getParentFile().exists()) {
ok = file.getParentFile().mkdirs();
}
InputStream in = null;
if (ok) {
try {
URL urlObj = new URL(url);
in = urlObj.openStream();
FileOutputStream out = new FileOutputStream(file);
Streams.copy(in, out, true);
} finally {
StreamUtil.closeQuiet(in);
}
}
}
/**
* 读取一个文本内容
* 默认使用UTF-8编码
* @param url
* @return
*/
public static String asStringQuiet(String url) {
return asStringQuiet(url, "UTF-8");
}
/**
* 读取一个文本内容
* @param url
* @param pEncoding 字符编码
* @return
*/
public static String asStringQuiet(String url, String pEncoding) {
InputStream in = null;
try {
URL urlObj = new URL(url);
in = urlObj.openStream();
return Streams.asString(in, pEncoding);
} catch (Exception ex) {
LoggerFactory.getLogger(URLResource.class).error(
"read " + url + " occur error:", ex);
} finally {
StreamUtil.closeQuiet(in);
}
return "";
}
/**
* 对URL的&号转为&
* @param url
* @return
*/
public static String escapeXml(String url)
{
if(url==null || url.length()<1)
{
return url;
}
int index = url.indexOf('&');
if(index<0)
{
return url;
}
StringBuilder sb = new StringBuilder(url);
int offset = 0;//因为escape导致的偏移量
while(index!=-1)
{
//判断后面是否有amp;
if(index+4>url.length()-1 || url.charAt(index+1)!='a'|| url.charAt(index+2)!='m'
|| url.charAt(index+3)!='p'|| url.charAt(index+4)!=';')
{
sb.insert(index+1+offset, "amp;");
offset += 4;
}
index = url.indexOf('&', index+1);
}
return sb.toString();
}
/**
* 对URL地址编码
*
* @param url
* @return
*/
public String encodeUrl(String url) {
try {
url = URLEncoder.encode(url, "utf-8");
} catch (Exception ex) {
LoggerFactory.getLogger(URLResource.class).error(
"encodeUrl " + url + " occur error:", ex);
}
return url;
}
/**
* 对URL地址解码
*
* @param url
* @return
*/
public String decodeUrl(String url) {
try {
url = URLDecoder.decode(url, "utf-8");
} catch (Exception ex) {
LoggerFactory.getLogger(URLResource.class).error(
"decodeUrl " + url + " occur error:", ex);
}
return url;
}
/**
* 生成调用播放器的playUrl
*
* @param args
* @return
*/
public static String generatePlayerUrl(String... args) {
StringBuffer sb = new StringBuffer();
int i = 0;
for (String arg : args) {
i++;
sb.append(arg);
if (i != args.length) {
sb.append(",");
}
}
return sb.toString();
}
}
URL标识的资源读取工具
最新推荐文章于 2022-06-12 21:45:34 发布