posts - 20,  comments - 2,  trackbacks - 0

作者: tianshi0253  链接:http://tianshi0253.javaeye.com/blog/204572  发表时间: 2008年06月17日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

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());   
  
    }   
  
} 

 


本文的讨论也很精彩,浏览讨论>>


JavaEye推荐




文章来源:http://tianshi0253.javaeye.com/blog/204572
posted on 2008-06-17 09:40 姚文超 阅读(265) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: