package org.firesoa.common.util;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Utils {
// InputStream 转换成byte[]
private static final int BUFFER_SIZE = 1024;
public static byte[] inputStream2ByteArray(InputStream is)
throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] b = new byte[BUFFER_SIZE];
int len = 0;
while ((len = is.read(b, 0, BUFFER_SIZE)) != -1) {
baos.write(b, 0, len);
}
baos.flush();
byte[] bytes = baos.toByteArray();
return bytes;
}
public static String inputStream2String(InputStream in, String charset)
throws IOException {
byte[] bytes = inputStream2ByteArray(in);
return new String(bytes, charset);
}
public static String findXmlCharset(String processXml) {
String encoding = "UTF-8";
Pattern encodingPattern = Pattern.compile(
"<\\?xml.*\\s+encoding\\s*=\\s*[\"']?([\\w\\-_]+)[\"'\\s?><]",
Pattern.DOTALL + Pattern.CASE_INSENSITIVE);
Matcher m = encodingPattern.matcher(processXml);
if (m.find()) {
encoding = m.group(1).trim();
}
return encoding;
}
public static String findXmlCharset(InputStream inStream) throws IOException{
String encoding = "UTF-8";
Pattern encodingPattern = Pattern.compile(
"<\\?xml.*\\s+encoding\\s*=\\s*[\"']?([\\w\\-_]+)[\"'\\s?><]",
Pattern.DOTALL + Pattern.CASE_INSENSITIVE);
InputStream stream = inStream;
if (!stream.markSupported()) {
return encoding;
}
byte[] buf = new byte[70];
stream.mark(100);
int len = stream.read(buf);
if (len > 0) {
String xmlHead = new String(buf, 0, len);
Matcher m = encodingPattern.matcher(xmlHead);
if (m.find()) {
encoding = m.group(1).trim();
}
}
stream.reset();
return encoding;
}
public static String newUUID(){
String original = UUID.randomUUID().toString();
String myUUID = "fid_"+original.replaceAll("-", "_");
return myUUID;
}
}