Comparación de varios métodos de JAVA de entrada de texto y de salida corrientes

测试写入类


 


/ **
  *测试结果
  * 
  * 1.file de largo: 16kb
  * 
  tiempo de FILEWRITE ---------- 36
  tiempo de outputStreamTest ---------- 167
  tiempo de bufferedOutputTest --- ------- 17
  tiempo de bufferedWriteTest ---------- 14
  tiempo de bufferedWrite Y FileWriterTest ---------- 9
  tiempo de bufferedWrite Y BufferedOutputStreamTest ---------- 12
  * 
  * 2.file es larga: 1600kb
  tiempo de FILEWRITE ---------- 69
  tiempo de outputStreamTest ---------- 1282
  el tiempo de bufferedOutputTest ---------- 68
  tiempo de bufferedWriteTest ---------- 40
  bufferedWrite Y FileWriterTest' Es hora ---------- 52
  tiempo de bufferedWrite Y BufferedOutputStreamTest ---------- 37
  * 
  * 3.file es larga: 16000kb
  tiempo de FILEWRITE ---------- 555
  de tiempo de outputStreamTest ---------- 12448
  de bufferedOutputTest tiempo ---------- 599
  tiempo de bufferedWriteTest ---------- 346
  tiempo de bufferedWrite Y FileWriterTest ---------- 316
  tiempo de bufferedWrite Y BufferedOutputStreamTest ------ ---- 358
  
  4.file es larga: 160000kb
  
  tiempo de FILEWRITE ---------- 5203
  el tiempo de outputStreamTest ---------- 127182
  tiempo de bufferedOutputTest ---------- 5972
  tiempo de bufferedWriteTest ---------- 3445最优
  bufferedWrite Y FileWriterTest' Es hora ---------- 5904
  tiempo de bufferedWrite Y BufferedOutputStreamTest ---------- 5353
  
  
  5.file es larga: 1600000kb
  
  tiempo de FILEWRITE ---------- 50416
  tiempo de outputStreamTest ---------- 1303242
  tiempo- de bufferedOutputTest --------- 60931
  tiempo de bufferedWriteTest ---------- 46697
  tiempo de bufferedWrite Y FileWriterTest ---------- 48710
  tiempo de bufferedWrite Y BufferedOutputStreamTest -------- --64354
  * /


 public static void main (String [] args) {


  string cadena = "abcdefghijklmn!";
  int cuenta = 1000000;
  TestOutputStream t = new TestOutputStream ();
  = System.currentTimeMillis largo start ();
  t.fileWriteTest (recuento, str);
  extremo largo = System.currentTimeMillis ();
  System.out.println ( "tiempo de FILEWRITE ---------" + (inicio - fin));


  inicio = System.currentTimeMillis ();
  t.outputStreamTest (recuento, str);
  terminar = System.currentTimeMillis ();
  System.out.println ( "tiempo de outputStreamTest ---------" + (inicio - fin));


  inicio = System.currentTimeMillis ();
  t.bufferedOutputTest (recuento, str);
  terminar = System.currentTimeMillis ();
  System.out
    .println ( "tiempo de bufferedOutputTest ---------" + (inicio - fin));
  
  inicio = System.currentTimeMillis ();
  t.bufferedWriteTest (recuento, str);
  terminar = System.currentTimeMillis ();
  System.out.println ( "tiempo de bufferedWriteTest ---------" + (inicio - fin));
  
  inicio = System.currentTimeMillis ();
  t.bufferedWriteAndFileWriterTest (recuento, str);
  terminar = System.currentTimeMillis ();
  System.out.println ( "tiempo de bufferedWrite Y FileWriterTest ---------" + (inicio - fin));
  
  inicio = System.currentTimeMillis ();
  t.bufferedWriteAndBufferedOutputStreamTest (recuento, str);
  terminar = System.currentTimeMillis ();
  System.out.println ( "tiempo de bufferedWrite Y BufferedOutputStreamTest ---------" + (inicio - fin));
  
  
  

 










 outputStreamTest pública vacío (int cuenta, cadena str) {
  File f = new File ( "f: test1.txt");
  OutputStream OS = null;
  try {
   os = nuevo FileOutputStream (f);
   for (int i = 0; i <count; i ++) {
    os.write (str.getBytes ());
   }
   Os.flush ();
   System.out.println ( "archivo es larga:" + f.length ());
  } Catch (FileNotFoundException e) {
   e.printStackTrace ();
  } Catch (IOException e) {
   e.printStackTrace ();
  } Finally {
   try {
    os.close ();
   } Catch (IOException e) {
    e.printStackTrace ();
   }
  }
 }


 / **
  * 2按字节缓冲写入BufferedOutputStream
  * 
  * @ param recuento写入循环次数
  * @param str写入字符串
  * /
 público bufferedOutputTest vacío (int cuenta, cadena str) {
  File f = new File ( "f : test2.txt ");
  BufferedOutputStream bos = null;
  try {
   OutputStream OS = new FileOutputStream (f);
   bos = nuevo BufferedOutputStream (os);
   for (int i = 0; i <count; i ++) {
    bos.write (str.getBytes ());
   }
   Bos.flush ();
  } Catch (FileNotFoundException e) {
   e.printStackTrace ();
  } Catch (IOException e) {
   e.printStackTrace ();
  } finalmente {
   try {
    bos.close ();
   } Catch (IOException e) {
    e.printStackTrace ();
   }
  }
 }
 
 / **
  * 3按字符写入FileWriter
  * 
  * @ param recuento写入循环次数
  * @param str写入字符串
  * /
 public void fileWriteTest (recuento int, String str) {
  File f = new File (" f: test.txt ");
  Escritor escritor = null;
  try {
   escritor = nuevo FileWriter (f);
   for (int i = 0; i <count; i ++) {
    writer.write (str);
   }
   Writer.flush ();
  } Catch (IOException e) {
   e.printStackTrace ();
  } finalmente {
   try {
    writer.close ();
   } Catch (Exception e) {
    e.printStackTrace ();
   }
  }
 }


 / **
  * 4按字符缓冲写入BufferedWriter
  * 
  * @ param recuento写入循环次数
  * @param str写入字符串
  * /
 public void bufferedWriteTest (recuento int, String str) {
  File f = new File ( "f: test3.txt");
  OutputStreamWriter escritor = null;
  BufferedWriter bw = null;
  try {
   OutputStream OS = new FileOutputStream (f);
   escritor = nuevo OutputStreamWriter (os);
   bw = new BufferedWriter (escritor);
   for (int i = 0; i <count; i ++) {
    bw.write (STR);
   }
   bw.flush ();
   SI (f.exists ()) {
    f.delete ();
   }
  } la captura (un FileNotFoundException E) {
   e.printStackTrace ();
  } el catch (IOException e) {
   e.printStackTrace ();
  } {el fin
   del try {
    bw.close ();
   } el catch (IOException e) {
    e.printStackTrace ();
   }
  }
 }
 
 / **
  . * escrito en la memoria intermedia de caracteres 5 y BufferedOutputStream el BufferedWriter,
  * 
  * @ param contar el número de ciclos de escritura
  * @param str escribir la cadena
  * /
 bufferedWriteAndBufferedOutputStreamTest pública vacío (int cuenta, cadena str) {
  File f = new File ( "f: test4.txt");
  BufferedOutputStream bos = null;
  OutputStreamWriter escritor = null;
  BufferedWriter bw = null;
  try {
   OutputStream OS = new FileOutputStream (f);
   bos = nuevo BufferedOutputStream (os);
   escritor = nuevo OutputStreamWriter (BOS);
   bw = new BufferedWriter (escritor);
   for (int i = 0; i <count; i ++) {
    bw.write (str);
   }
   Bw.flush ();
   if (f.exists ()) {
    f.delete ();
    System.out.println ( "borrar ---");
   }
  } Catch (FileNotFoundException e) {
   e.printStackTrace ();
  } el catch (IOException e) {
   e.printStackTrace ();
  } {el fin
   del try {
    bw.close ();
   } el catch (IOException e) {
    e.printStackTrace ();
   }
  }
 }
 
 / **
  * 6 está escrito por búfer de caracteres y FileWriter BufferedWriter,
  * 
  * @ param ciclos de escritura COUNT
  * @param str escribir la cadena
  * /
 bufferedWriteAndFileWriterTest public void (int cuenta, cadena STR) {
  archivo nueva nueva F = ( "F: Test5. TXT ");
  FileWriter FW = null;
  BufferedWriter, BW = null;
  el try {
   FW = new nuevo FileWriter (F); 
   bw = new BufferedWriter (fw);
   for (int i = 0; i <count; i ++) {
    bw.write (str);
   }
   Bw.flush ();
  } Catch (FileNotFoundException e) {
   e.printStackTrace ();
  } Catch (IOException e) {
   e.printStackTrace ();
  } Finally {
   try {
    bw.close ();
    if (f.exists ()) {
     f.delete ();
    }
   } Catch (IOException e) {
    e.printStackTrace ();
   }
  }
 }


 


总结:


Si se clasifican por bytes de caracteres y, además de 1 y 2, el resto se escriben en el archivo por el carácter, el carácter es generalmente más rápido que la escritura de bytes; ver java API entiende, que la clase padre OutputStreamWriter FileWriter, ambos son implementados clase de escritor, a partir de este momento, el método casi no hay diferencia entre 4 y 6, hay una ligera diferencia de tiempo, pero el mecanismo interno es el mismo, pero el método es relativamente simple 6, la definición de las variables de un pequeño, solía utilizar el método 4, parece que después de demasiado bajo el cambio.

发布了12 篇原创文章 · 获赞 6 · 访问量 2万+

Supongo que te gusta

Origin blog.csdn.net/huaweizte123/article/details/16962345
Recomendado
Clasificación