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[bufferSize];// 缓冲区
      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());
     }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值