本帖最后由 Joemi 于 2014-8-9 09:28 编辑
我们都习惯于一次把文本的原始内容直接读取到内存中再做处理(暂时不考虑内存大小),这样做效率也会提高。很多人用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);//返回文件内容,默认编码
- }
- }
复制代码
这种方法的好处是读取的内容可以彻底保持文件的原貌,而且速度应该是最快的,因为只需要调用一次文件访问,字符编码转换也只需要一次。上面的代码我都是默认的编码,文件编码不同,道理都是一样的!!! |
|