いくつかの方法JAVAテキスト入力および出力ストリームの比較

测试写入类


 


/ **
  *测试结果
  * 
  * 1.fileの長い:16キロバイト
  * 
  FILEWRITEの時間---------- 36
  outputStreamTestの時間---------- 167
  bufferedOutputTestの時間--- ------- 17
  bufferedWriteTestの時間---------- 14
  bufferedWriteそしてFileWriterTestの時間---------- 9
  bufferedWriteそしてBufferedOutputStreamTestの時間---------- 12
  * 
  * 2.fileの長い:1600キロバイト
  FILEWRITEの時間---------- 69
  outputStreamTestの時間---------- 1282
  bufferedOutputTestの時間---------- 68
  bufferedWriteTestの時間---------- 40
  bufferedWriteとFileWriterTest」 sの時間---------- 52
  bufferedWriteそしてBufferedOutputStreamTestの時間---------- 37
  * 
  * 3.fileの長い:16000キロバイト
  FILEWRITEの時間---------- 555
  outputStreamTestの時間---------- 12448
  bufferedOutputTestさん時間---------- 599
  bufferedWriteTestの時間---------- 346
  bufferedWriteそしてFileWriterTestの時間---------- 316
  bufferedWriteそしてBufferedOutputStreamTestの時間------ ---- 358
  
  4.fileの長い:16万キロバイト
  
  FILEWRITEの時間---------- 5203
  outputStreamTestの時間---------- 127182
  bufferedOutputTestの時間---------- 5972
  bufferedWriteTestの時間---------- 3445最优
  bufferedWriteとFileWriterTest」 sの時間---------- 5904
  bufferedWriteそしてBufferedOutputStreamTestの時間---------- 5353
  
  
  5.fileの長い:160万キロバイト
  
  FILEWRITEの時間---------- 50416
  outputStreamTestの時間を---------- 1303242
  bufferedOutputTestのタイム--------- 60931
  bufferedWriteTestの時間---------- 46697
  bufferedWriteそしてFileWriterTestの時間---------- 48710
  bufferedWriteそしてBufferedOutputStreamTestの時間-------- --64354
  * /


 パブリック静的な無効メイン(文字列[] args){


  文字列str = "ABCDEFGHIJKLMN!"。
  int型のカウント= 1000000;
  TestOutputStreamトン=新しいTestOutputStream();
  ロング)(開始=にSystem.currentTimeMillis。
  t.fileWriteTest(数、STR);
  長い端=にSystem.currentTimeMillis();
  System.out.println( "FILEWRITEの時間---------" +(開始-終了));


  START =のSystem.currentTimeMillis();
  t.outputStreamTest(数、STR);
  端=のSystem.currentTimeMillis();
  System.out.println( "outputStreamTestの時間---------" +(開始-終了));


  START =のSystem.currentTimeMillis();
  t.bufferedOutputTest(数、STR);
  端=のSystem.currentTimeMillis();
  System.out
    .println( "bufferedOutputTestの時間---------" +(開始-終了));
  
  START =のSystem.currentTimeMillis();
  t.bufferedWriteTest(数、STR);
  端=のSystem.currentTimeMillis();
  System.out.println( "bufferedWriteTestの時間---------" +(開始-終了));
  
  START =のSystem.currentTimeMillis();
  t.bufferedWriteAndFileWriterTest(数、STR);
  端=のSystem.currentTimeMillis();
  System.out.println( "bufferedWriteそしてFileWriterTestの時間---------" +(開始-終了));
  
  START =のSystem.currentTimeMillis();
  t.bufferedWriteAndBufferedOutputStreamTest(数、STR);
  端=のSystem.currentTimeMillis();
  System.out.println( "bufferedWriteそしてBufferedOutputStreamTestの時間---------" +(開始-終了));
  
  
  

 










 公共のボイドoutputStreamTest(int型の数、文字列str){
  ファイルf =新しいファイル( "F:test1.txtという");
  OutputStreamのOS = NULL;
  試す{
   OSは=新しいたFileOutputStream(F)。
   以下のために(INT I 0 =; I <数; I ++){
    os.write(str.getBytes())。
   }
   os.flush()。
   System.out.println( "ファイルの長い:" + f.length());
  }キャッチ(にFileNotFoundException電子){
   e.printStackTrace();
  }キャッチ(IOExceptionを電子){
   e.printStackTrace();
  }最後に{
   試み{
    にos.close()。
   }キャッチ(IOExceptionを電子){
    e.printStackTrace();
   }
  }
 }


 / **
  * 2按字节缓冲写入なBufferedOutputStream
  * 
  * @param数写入循环次数
  * @param strの写入字符串
  * /
 パブリック無効bufferedOutputTest(int型の数、文字列str){
  ファイルf =新しいファイル( "F :test2.txtという名前");
  BufferedOutputStreamがBOS = NULL;
  {試みる
   のOutputStream OS =新しいたFileOutputStream(F)。
   BOS =新しいBufferedOutputStreamが(OS);
   以下のために(INT I 0 =; I <数; I ++){
    bos.write(str.getBytes())。
   }
   bos.flush()。
  }キャッチ(にFileNotFoundException電子){
   e.printStackTrace();
  }キャッチ(IOExceptionを電子){
   e.printStackTrace();
  } 最終的に {
   {試みる
    bos.closeを();
   }キャッチ(IOExceptionを電子){
    e.printStackTrace();
   }
  }
 }
 
 / **
  * 3按字符写入てFileWriter
  * 
  * @param数写入循环次数
  * @param strの写入字符串
  * /
 パブリック無効fileWriteTest(int型の数、文字列str){
  ファイルf =新しいファイル(」 F:test.txtの");
  ライターライター= NULL;
  試し{
   作家は=新しいてFileWriter(F);
   以下のために(INT I 0 =; I <数; I ++){
    writer.write(STR)。
   }
   writer.flush()。
  }キャッチ(IOExceptionを電子){
   e.printStackTrace();
  } 最終的に {
   {試みる
    writer.closeを();
   }キャッチ(例外e){
    e.printStackTrace();
   }
  }
 }


 / **
  * 4按字符缓冲写入BufferedWriterの
  * 
  * @paramカウント写入循环次数
  * @param STR写入字符串
  * /
 公共ボイドbufferedWriteTest(INT数、文字列str){
  ファイルf =新しいファイル( "F:test3.txt");
  OutputStreamWriterライター= NULL;
  BufferedWriterのBW = NULL;
  {試みる
   のOutputStream OS =新しいたFileOutputStream(F)。
   ライター=新しいのOutputStreamWriter(OS);
   BW =新しいBufferedWriterの(作家);
   以下のために(INT I 0 =; I <数; I ++){
    bw.write(STR);
   }
   bw.flush();
   IF(f.exists()){
    f.delete();
   }
  }キャッチ(にFileNotFoundException E){
   e.printStackTrace();
  }キャッチ(IOExceptionをE){
   e.printStackTrace();
  } {最後に
   試し{
    bw.close();
   }キャッチ(IOExceptionをEは){
    e.printStackTrace();
   }
  }
 }
 
 / **
  *文字バッファに書き込まれた5となBufferedOutputStreamザ・BufferedWriterの、。
  * 
  * @param書き込みサイクルの数をカウント
  する文字列を書く@param strの*
  * /
 公共のボイドbufferedWriteAndBufferedOutputStreamTest(int型の数、文字列str){
  ファイルf =新しいファイル( "F:test4.txt");
  BufferedOutputStreamがBOS = NULL;
  OutputStreamWriterライター= NULL;
  BufferedWriterのBW = NULL;
  {試みる
   のOutputStream OS =新しいたFileOutputStream(F)。
   BOS =新しいBufferedOutputStreamが(OS);
   ライター=新しいのOutputStreamWriter(BOS);
   BW =新しいBufferedWriterの(作家);
   以下のために(INT I 0 =; I <数; I ++){
    bw.write(STR)。
   }
   bw.flush()。
   IF(f.exists()){
    f.delete()。
    System.out.println( "削除---");
   }
  }キャッチ(にFileNotFoundException電子){
   e.printStackTrace();
  }キャッチ(IOExceptionをE){
   e.printStackTrace();
  } {最後に
   試し{
    bw.close();
   }キャッチ(IOExceptionをE){
    e.printStackTrace();
   }
  }
 }
 
 / **
  * 6は、文字バッファとしてFileWriter BufferedWriterので書かれている
  * 
  * @paramのCOUNTの書き込みサイクル
  * @param strの文字列の書き込み
  * /
 パブリック無効bufferedWriteAndFileWriterTest(int型COUNT、文字列STR){
  TEST5:新しいF新しいファイルファイル=(」Fを。 TXT「);
  てFileWriter FW = NULL;
  BufferedWriterの、BW = NULL;
  試み{
   FW =新しい新しいてFileWriter(F); 
   BW =新しいBufferedWriterの(FW)。
   以下のために(INT I 0 =; I <数; I ++){
    bw.write(STR)。
   }
   bw.flush()。
  }キャッチ(にFileNotFoundException電子){
   e.printStackTrace();
  }キャッチ(IOExceptionを電子){
   e.printStackTrace();
  }最後に{
   {試みる
    bw.closeを();
    IF(f.exists()){
     f.delete()。
    }
   }キャッチ(IOExceptionを電子){
    e.printStackTrace();
   }
  }
 }


 


总结。


1及び2に加えて、文字のバイト数によって分類した場合、残りは文字によってファイルに書き込まれ、文字が通常より速く、書き込みバイトよりもある;のOutputStreamWriterてFileWriter親クラスという、彼らは両方とも実装され、JavaのAPIを理解見ますライタークラス、この時点から、この方法は4と6の間にほとんど差があり、そこにわずかな時間差であるが、内部メカニズムは同じですが、この方法は、6比較的簡単ですが、少しは、私は方法4を使用するために使用される変数の定義は、それが思わあまりに後変更の下で。

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

おすすめ

転載: blog.csdn.net/huaweizte123/article/details/16962345