Java中的IO的性能优化

Java中的IO的性能优化
在使用IO的时候注意一下细节,能使性能得到很大的优化.
首先读写大文件,使用Buffer是肯定的了,使用方法,有下边两个

 1     方法一:
2     public       static       void    test1(String fileName)    {
3           long    start    =    System.currentTimeMillis();
4            try       {
5            FileInputStream fis    =       new    FileInputStream(fileName);
6            BufferedReader br    =       new    BufferedReader(   new    InputStreamReader(fis) );
7            StringBuffer sb    =   new    StringBuffer();
8            String str;
9                while    ((str    =    br.readLine())    !=       null   )    {
10                sb.append(str);
11            }
12         }       catch    (IOException e)    {
13        }
14           long    end    =    System.currentTimeMillis();
15           long    time   =   end   -   start;
16        System.out.println(time);
17    }
18    方法二:
19     public       static       void    test2(String fileName)    {
20           long    start    =    System.currentTimeMillis();
21            try       {
22            FileInputStream fis    =       new    FileInputStream(fileName);
23               byte    buf[]    =       new       byte   [   8192   ];
24               int    n;
25            StringBuffer sb    =       new    StringBuffer();
26                while    ((n    =    fis.read(buf))    !=       -   1   )    {
27                sb.append(buf);
28            }
29            fis.close();
30         }       catch    (IOException e)    {
31        }
32           long    end    =    System.currentTimeMillis();
33           long    time   =   end   -   start;
34        System.out.println(time);
35    }

方法一1937ms
方法二47ms
测试结果相差大概50倍左有,很大。
而我平时的习惯是方法一。问题主要出在readLine()上。

如果只是简单的文件拷贝,下边两种方法也不错

 1     public           static           void      test3()         {
2        String cmd     =       "    copy d:/out1.txt out2.txt    "    ;
3            try       {
4             Runtime.getRuntime().exec(cmd);
5         }       catch    (Exception e)    {
6             e.printStackTrace();
7        }
8    }
9     public         static         void     test4()    {
10        String inFileName     =         "    d:/out1.txt    "    ;
11        String outFileName     =         "    d:/out2.txt    "    ;
12           long     start     =     System.currentTimeMillis();
13            try       {
14            File inFile     =         new     File(inFileName);
15            File outFile     =         new     File(outFileName);
16            RandomAccessFile inRaf     =         new     RandomAccessFile(inFile,    "    r    "    );
17            RandomAccessFile outRaf     =         new     RandomAccessFile(outFile,    "    rw    "    );
18            FileChannel infc     =     inRaf.getChannel();
19            FileChannel outfc     =     outRaf.getChannel();
20            infc.transferTo(    0    , inFile.length(),outfc );
21            infc.close();
22            outfc.close();
23         }       catch    (Exception e)    {
24            e.printStackTrace();
25        }
26           long     end     =     System.currentTimeMillis();
27           long     time    =    end    -    start;
28        System.out.println(time);
29    }

原文:http://qcyycom.iteye.com/blog/1479623


» 本文链接:https://blog.java-zone.org/archives/262.html
» 转载请注明来源:Java地带  » 《Java中的IO的性能优化》

» 本文章为Java地带整理创作,欢迎转载!转载请注明本文地址,谢谢!
» 部分内容收集整理自网络,如有侵权请联系我删除!

» 订阅本站:https://blog.java-zone.org/feed/

标签: Java性能, Java优化, IO

添加新评论