JAVA常见IO操作(转贴)

本文介绍了一个用于简化Java中文件和流操作的实用工具类。该工具类提供了多种方法,如将输入流复制到输出流、读取文件内容为字符串或字节数组、复制文件等。
package com.syj.util;    

   

  //转贴 http://blog.youkuaiyun.com/sunyujia/archive/2008/06/15/2551297.aspx 

   

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.youkuaiyun.com/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());    

    }     

}   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值