java 文件读写工具 FileUtil

代码如下:

  1 package com.wiscom.utils;
  2 
  3 import java.io.BufferedReader;
  4 import java.io.File;
  5 import java.io.FileInputStream;
  6 import java.io.FileNotFoundException;
  7 import java.io.FileWriter;
  8 import java.io.IOException;
  9 import java.io.InputStream;
 10 import java.io.InputStreamReader;
 11 import java.io.Reader;
 12 import java.io.UnsupportedEncodingException;
 13 
 14 public class FileUtil {
 15     
 16     /**
 17      *  以字节为单位读取文件,通常用于读取二进制文件,如图片
 18      * @param path
 19      * @return
 20      */
 21     public static String readByBytes(String path) {    
 22         String content = null;
 23         
 24         try {
 25             InputStream inputStream = new FileInputStream(path);
 26             StringBuffer sb = new StringBuffer();
 27             int c = 0;
 28             byte[] bytes = new byte[1024];
 29             /*
 30              * InputStream.read(byte[] b)
 31              * 
 32              * Reads some number of bytes from the input stream and stores them into the buffer array b. 从输入流中读取一些字节存入缓冲数组b中
 33              * The number of bytes actually read is returned as an integer.  返回实际读到的字节数
 34              * This method blocks until input data is available, end of file is detected, or an exception is thrown. 
 35              * 该方法会一直阻塞,直到输入数据可以得到、或检测到文件结束、或抛出异常  -- 意思是得到数据就返回
 36              */
 37             while ((c = inputStream.read(bytes)) != -1) {
 38                 sb.append(new String(bytes, 0, c, "utf-8"));
 39             }
 40             
 41             content = sb.toString();
 42             inputStream.close();
 43         } catch (FileNotFoundException e) {
 44             e.printStackTrace();
 45         } catch (IOException e) {
 46             e.printStackTrace();
 47         }
 48         
 49         return content;
 50     } 
 51     
 52     /**
 53      *  以行为单位读取文件,常用于读取面向行的格式化文件
 54      * @param path
 55      * @return
 56      */
 57     public static String readByLines(String path) {
 58         String content = null;
 59         
 60         
 61         try {
 62             BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(path), "utf-8"));
 63             
 64             StringBuffer sb = new StringBuffer();
 65             String temp = null;
 66             while ((temp = bufferedReader.readLine()) != null) {
 67                 sb.append(temp);
 68             }
 69             
 70             content = sb.toString();
 71             bufferedReader.close();
 72         } catch (UnsupportedEncodingException  e) {
 73             e.printStackTrace();
 74         } catch (IOException e) {
 75             e.printStackTrace();
 76         }
 77         
 78         return content;
 79     }
 80     
 81     /**
 82      *  以字符为单位读取文件,常用于读取文本文件
 83      * @param path
 84      * @return
 85      */
 86     public static String readByChars(String path) {
 87         String content = null;
 88         
 89         try {
 90             
 91             Reader reader = new InputStreamReader(new FileInputStream(path), "utf-8");
 92             StringBuffer sb = new StringBuffer();
 93             
 94 
 95             char[] tempchars = new char[1024];
 96             while (reader.read(tempchars) != -1) {
 97                 sb.append(tempchars);
 98             }
 99             
100             content = sb.toString();
101             reader.close();    
102         } catch (Exception e) {
103             e.printStackTrace();
104         }    
105         return content;
106     }
107     
108     /**
109      *  把内容content写的path文件中
110      * @param content
111      * @param path
112      * @return
113      */
114     public static boolean saveAs(String content, String path) {
115         
116         FileWriter fw = null;
117         
118         //System.out.println("把内容:" + content + ", 写入文件:"  + path);
119         
120         try {
121             /**
122              * Constructs a FileWriter object given a File object. 
123              * If the second argument is true, then bytes will be written to the end of the file rather than the beginning.
124              * 根据给定的File对象构造一个FileWriter对象。 如果append参数为true, 则字节将被写入到文件的末尾(向文件中追加内容)
125              *
126              *    Parameters:
127              *        file,  a File object to write to 带写入的文件对象
128              *        append,  if true, then bytes will be written to the end of the file rather than the beginning
129              *    Throws:
130              *        IOException - 
131              *        if the file exists but is a directory rather than a regular file, 
132              *            does not exist but cannot be created, 
133              *            or cannot be opened for any other reason
134              *      报异常的3种情况:
135              *          file对象是一个存在的目录(不是一个常规文件)
136              *          file对象是一个不存在的常规文件,但不能被创建
137              *          file对象是一个存在的常规文件,但不能被打开
138              *
139              */
140             fw = new FileWriter(new File(path), false);
141             if (content != null) {
142                 fw.write(content);
143             }    
144         } catch (IOException e) {
145             e.printStackTrace();
146             return false;
147         } finally {
148             if (fw != null) {
149                 try {
150                     fw.flush();
151                     fw.close();
152                 } catch (IOException e) {
153                     e.printStackTrace();
154                 }
155             }
156         }
157         return true;
158     }
159 }

 

posted @ 2015-06-12 21:22  asnjudy  阅读(4218)  评论(0编辑  收藏  举报