tianshi0253 发表于 2013-1-27 05:18:36

JAVA常用IO操作(转)

package com.syj.util;         import java.io.BufferedReader;   import java.io.BufferedWriter;   import java.io.ByteArrayInputStream;   import java.io.ByteArrayOutputStream;   import java.io.File;   import java.io.FileInputStream;   import java.io.FileOutputStream;   import java.io.FileReader;   import java.io.FileWriter;   import java.io.IOException;   import java.io.InputStream;   import java.io.InputStreamReader;   import java.io.ObjectInputStream;   import java.io.ObjectOutputStream;   import java.io.OutputStream;   import java.io.PrintWriter;   import java.io.StringReader;   import java.util.Arrays;         /**    * <p>    * Title:IO工具类    * </p>    *   * <p>    * Description:常用的IO操作封装    * </p>    *   * <p>    * Copyright: 转载请注明出处http://blog.csdn.net/sunyujia/    * </p>    *   * @author 孙钰佳    * @main sunyujia@yahoo.cn    * @date Jun 15, 2008 4:37:58 PM    */    public class IOUtil {         /**      * 缓冲区大小 1MB      */      private static final int BUFFER_SIZE = 1024 * 1024;             /**      *         * Description: 将输入流输出到输出流      *         * @param in      *            输入流      * @param out      *            输出流      * @param bufferSize      *            缓冲区大小      * @throws IOException      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 5:57:24 PM      */      public static void in2OutStream(InputStream in, OutputStream out,               int bufferSize) throws IOException {             byte[] buffer = new byte;// 缓冲区             for (int bytesRead = 0; (bytesRead = in.read(buffer)) != -1;) {               out.write(buffer, 0, bytesRead);               Arrays.fill(buffer, (byte) 0);             }         }             /**      *         * Description: 读取文件返回字节数组流      *         * @param file      *            文件      * @return 字节数组流      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 4:52:41 PM      */      public static ByteArrayOutputStream readFileToByteStream(File file)               throws IOException {             FileInputStream fis = null;             ByteArrayOutputStream bos = null;             try {               fis = new FileInputStream(file);               bos = new ByteArrayOutputStream();               in2OutStream(fis, bos, BUFFER_SIZE);             } finally {               if (fis != null)                     fis.close();             }             return bos;         }             /**      *         * Description:读取文件返回字节数组      *         * @param file      *            文件      * @return 字节数组      * @throws IOException      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 5:38:50 PM      */      public static byte[] readFileToByteArray(File file) throws IOException {             ByteArrayOutputStream bos = null;             try {               bos = readFileToByteStream(file);             } finally {               if (bos != null)                     bos.close();             }             return bos.toByteArray();         }             /**      *         * Description:读取文件内容      *         * @param file      *            文件      * @return String内容      * @throws IOException      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 5:46:32 PM      */      public static String readFileToString(File file) throws IOException {             StringBuffer sb = null;             BufferedReader in = null;             try {               in = new BufferedReader(new FileReader(file));               sb = new StringBuffer();               for (String line; (line = in.readLine()) != null;) {                     sb.append(line + "\r\n");               }             } finally {               if (in != null)                     in.close();             }             return sb.toString();         }             /**      *         * Description:复制文件      *         * @param src      *            源文件      * @param dest      *            目标文件      * @param cover      *            是否覆盖      * @throws IOException      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 6:08:28 PM      */      public static void copyFile(File src, File dest, boolean cover)               throws IOException {             FileInputStream in = null;             FileOutputStream out = null;             try {               if (!dest.exists()) {                     dest.createNewFile();               } else if (dest.exists() && cover) {                     dest.delete();                     dest.createNewFile();               } else {                     return;               }               in = new FileInputStream(src);               out = new FileOutputStream(dest);               in2OutStream(in, out, BUFFER_SIZE);             } finally {               try {                     if (in != null)                         in.close();               } finally {                     if (out != null)                         out.close();               }             }         }             /**      *         * Description:写文件      *         * @param file      *            文件      * @param str      *            内容      * @throws IOException      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 6:17:24 PM      */      public static void writeFile(File file, String str) throws IOException {             PrintWriter out = null;             BufferedReader in = null;             try {               if (!file.exists())                     file.createNewFile();               in = new BufferedReader(new StringReader(str));               out = new PrintWriter(new BufferedWriter(new FileWriter(file)));               for (String line; (line = in.readLine()) != null;) {                     out.println(line);               }             } finally {               try {                     if (in != null)                         in.close();               } finally {                     if (out != null)                         out.close();               }             }         }             /**      *         * Description:从控制台读取一串字符串      *         * @return 读取的字符串      * @throws IOException      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 6:42:29 PM      */      public static String readStringFromSystemIn() throws IOException {             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));             try {               return br.readLine();             } finally {               if (br != null)                     br.close();             }         }             /**      *         * Description:当ObjectInputStream对象调用      * readObject();时,会从ByteArrayInputStream流中反序列化出的对象      *         *         * @param bi      * @return      * @throws IOException      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 7:07:53 PM      */      public static ObjectInputStream buildObjectInputStream(               ByteArrayInputStream bi) throws IOException {             return new ObjectInputStream(bi);         }             /**      *         * Description:当ObjectOutputStream对象调用      * writeObject(o);时,o对象会序列化到ByteArrayOutputStream流中去      *         * @param bos      *            字节数组流      * @return 对象输出流      * @throws IOException      * @mail sunyujia@yahoo.cn      * @since:Jun 15, 2008 7:06:00 PM      */      public static ObjectOutputStream buildObjectOutputStream(               ByteArrayOutputStream bos) throws IOException {             return new ObjectOutputStream(bos);         }             public static BufferedReader buildBufferedReader(String str) {             return new BufferedReader(new StringReader(str));         }             public static ByteArrayInputStream buildByteArrayInputStream(String str) {             return new ByteArrayInputStream(str.getBytes());         }             public static ByteArrayInputStream buildByteArrayInputStream(byte[] bt) {             return new ByteArrayInputStream(bt);         }             public static void main(String[] args) throws Exception {             byte[] bootFileBytes = IOUtil.readFileToByteArray(new File(                     "C:\\boot.ini"));             System.out.println(new String(bootFileBytes));             String bootFileStr = readFileToString(new File("C:\\boot.ini"));             System.out.println(bootFileStr);             System.out.println(new String(bootFileBytes).equals(bootFileStr));             IOUtil.copyFile(new File("C:\\boot.ini"), new File("C:\\boot1.ini"),                     true);             IOUtil.writeFile(new File("C:\\boot2.ini"), bootFileStr);             ByteArrayOutputStream bos = new ByteArrayOutputStream();             ObjectOutputStream oos = IOUtil.buildObjectOutputStream(bos);             oos.writeObject(new String("abcd"));             ObjectInputStream ois = IOUtil.buildObjectInputStream(IOUtil                     .buildByteArrayInputStream(bos.toByteArray()));             System.out.println(ois.readObject());             System.out.println(IOUtil.readStringFromSystemIn());         }   }  
页: [1]
查看完整版本: JAVA常用IO操作(转)