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.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) { char[] buf = new char[8192]; int n = 0; try { while((n = reader.read(buf)) != -1) { writer.write(buf,0,n); } }catch(IOException e){ throw new RuntimeException(e); } } public static void copy(InputStream in,OutputStream out) { try { byte[] buf = new byte[8192]; int n = 0; while((n = in.read(buf)) != -1) { out.write(buf,0,n); } }catch(IOException e){ throw new RuntimeException(e); } } public static List<String> readLines(Reader input) { try { BufferedReader reader = new BufferedReader(input); List list = new ArrayList(); String line = reader.readLine(); while (line != null) { list.add(line); line = reader.readLine(); } return list; }catch(IOException e){ throw new RuntimeException(e); } } public static String readFile(File file) { try { Reader in = new BufferedReader(new FileReader(file)); String result = toString(in); in.close(); return result; }catch(IOException e){ throw new RuntimeException("occer IOException when read file:"+file,e); } } public static String toString(Reader in) { StringWriter out = new StringWriter(); copy(in,out); return out.toString(); } public static String readFile(File file,String encoding) { try { InputStream inputStream = new FileInputStream(file); try { return toString(encoding, inputStream); }finally{ inputStream.close(); } }catch(IOException e){ throw new RuntimeException(e); } } public static String toString(InputStream inputStream) { Reader reader = new InputStreamReader(inputStream); StringWriter writer = new StringWriter(); copy(reader,writer); return writer.toString(); } public static String toString(String encoding, InputStream inputStream) { try { Reader reader = new InputStreamReader(inputStream,encoding); StringWriter writer = new StringWriter(); copy(reader,writer); return writer.toString(); }catch(IOException e){ throw new RuntimeException(e); } } 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); } } public static void saveFile(File file,InputStream in) { try{ FileOutputStream output = new FileOutputStream(file); copy(in,output); output.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) { 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){}; } }