java中有关IO操作的API太多了,而且因为历史原因,有些api已经被废弃,有时不免让一些初学者比较迷糊,今天抽时间整理了我平时常用的流操作,分享出来,如果有写错的地方,还请大家指正,因为大部分方法都写了注释,所以main中的测试代码就不写注释了.对于理论性的资料大家可参阅http://topic.csdn.net/u/20080619/10/30ead5c6-8410-46c4-b9a1-f14522983eac.html,如果大家对理论已经有所认知,正需要动手操作的话下面的代码正适合你.view plaincopy to clipboardprint?
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 [email protected]  
 
 * @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 [email protected]  
 
     * @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 [email protected]  
 
     * @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 [email protected]  
 
     * @since:Jun 15, 2008 5:38:50 PM  
 
     */  
  

解决方案 »

  1.   

        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 [email protected]  
     
         * @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 [email protected]  
     
         * @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 [email protected]  
     
         * @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 [email protected]  
     
         * @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 [email protected]  
     
         * @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 [email protected]  
     
         * @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());   
      
        }   
      
    }  
      

  2.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-19 10:05:57的汇总数据:
    注册日期:2008-3-3
    上次登录:2008-6-19
    发帖数:113
    结贴数:0
    结贴率: 0.00%
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  3.   

    Copyright: 转载请注明出处http://blog.csdn.net/sunyujia/  1 转载sunyujia的
    2 柴XX 可是惹不起的人物,大家注意点...
      

  4.   

    哥们请写上转载地址:
    http://blog.csdn.net/sunyujia/archive/2008/06/15/2551297.aspx