JAVA一次读取文本文件的所有内容

November 16, 2015

我们都习惯于一次把文本的原始内容直接读取到内存中再做处理(暂时不考虑内存大小),这样做效率也会提高。很多人用readline()之类的方法,可能需要反复访问文件,而且每次readline()都会调用编码转换,降低了速度,所以,在已知编码的情况下,按字节流方式先将文件都读入内存,再一次性编码转换是最快的方式,如:

import java.io.*;

public class testIO {
        public static void main(String[] args) {
                File file=new File("c://test.txt");  //我的文件在C盘下
                //String content=readToString(file);
                System.out.println(readToString(file));
        }

        public static String readToString(File file) {
                Long filelength = file.length();     //获取文件长度
                byte[] filecontent = new byte[filelength.intValue()];
                try {
                    FileInputStream in = new FileInputStream(file);
                    in.read(filecontent);
                    in.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return new String(filecontent);//返回文件内容,默认编码
        }


}

这种方法的好处是读取的内容可以彻底保持文件的原貌,而且速度应该是最快的,因为只需要调用一次文件访问,字符编码转换也只需要一次。上面的代码我都是默认的编码,文件编码不同,道理都是一样的!!!