package cn.org.rapid_framework.generator.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; import java.util.ArrayList; import java.util.List; /** * * @author badqiu * @email badqiu(a)gmail.com */ public class IOHelper { public static Writer NULL_WRITER = new NullWriter(); public static void copy(Reader reader,Writer writer) throws IOException { char[] buf = new char[8192]; int n = 0; while((n = reader.read(buf)) != -1) { writer.write(buf,0,n); } } public static void copy(InputStream in,OutputStream out) throws IOException { byte[] buf = new byte[8192]; int n = 0; while((n = in.read(buf)) != -1) { out.write(buf,0,n); } } public static List readLines(Reader input) throws IOException { BufferedReader reader = new BufferedReader(input); List list = new ArrayList(); String line = reader.readLine(); while (line != null) { list.add(line); line = reader.readLine(); } return list; } public static String readFile(File file) throws IOException { Reader in = new FileReader(file); StringWriter out = new StringWriter(); copy(in,out); return out.toString(); } public static String readFile(File file,String encoding) throws IOException { InputStream inputStream = new FileInputStream(file); return toString(encoding, inputStream); } public static String toString(InputStream inputStream) throws UnsupportedEncodingException, IOException { Reader reader = new InputStreamReader(inputStream); StringWriter writer = new StringWriter(); copy(reader,writer); return writer.toString(); } public static String toString(String encoding, InputStream inputStream) throws UnsupportedEncodingException, IOException { Reader reader = new InputStreamReader(inputStream,encoding); StringWriter writer = new StringWriter(); copy(reader,writer); return writer.toString(); } public static void saveFile(File file,String content) { saveFile(file,content,null,false); } public static void saveFile(File file,String content,boolean append) { saveFile(file,content,null,append); } public static void saveFile(File file,String content,String encoding) { saveFile(file,content,encoding,false); } public static void saveFile(File file,String content,String encoding,boolean append) { try { FileOutputStream output = new FileOutputStream(file,append); Writer writer = StringHelper.isBlank(encoding) ? new OutputStreamWriter(output) : new OutputStreamWriter(output,encoding); writer.write(content); writer.close(); }catch(IOException e){ throw new RuntimeException(e); } } private static class NullWriter extends Writer { public void close() throws IOException { } public void flush() throws IOException { } public void write(char[] cbuf, int off, int len) throws IOException { } } public static void copyAndClose(InputStream in,OutputStream out) throws IOException { try { copy(in,out); }finally { close(in,out); } } public static void close(InputStream in, OutputStream out) { try { if(in != null) in.close();}catch(Exception e){}; try { if(out != null) out.close();}catch(Exception e){}; } }