|
Java中的IO的性能优化 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 }
如果只是简单的文件拷贝,下边两种方法也不错 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 } |