亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中常見的IO讀寫效率對比

發布時間:2021-08-30 17:09:48 來源:億速云 閱讀:242 作者:chen 欄目:編程語言

這篇文章主要介紹“Java中常見的IO讀寫效率對比”,在日常操作中,相信很多人在Java中常見的IO讀寫效率對比問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java中常見的IO讀寫效率對比”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Java中的IO的類庫非常的龐大,選擇性非常的多,當面臨一個問題時,往往不知道如何下手!

更具我現在的理解,在效率不是非常重要的情況下,一般情況下可能只需要考慮兩種情況,即想按照字節去讀取,還是想按照行去讀取,而一般情況無論采取什么方式去讀取,***的方式都莫過于用Buffered...去包裝要是用的類,而如果效率要求比較高則可以考慮是用FileChannel 或者是 file map,其中file Map是讀寫效率***的一種方式,如果讀取的文件非常的大這種方式是***,下面的例子是對常見幾種讀文件方式的效率比較,通過一個動態代理的模式來統計每個方法的執行時間,測試文件是100多兆的數據文件。

package com.eric.io;   import java.io.BufferedInputStream;  import java.io.BufferedOutputStream;  import java.io.BufferedReader;  import java.io.BufferedWriter;  import java.io.ByteArrayInputStream;  import java.io.DataInputStream;  import java.io.DataOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.io.FileReader;  import java.io.FileWriter;  import java.io.IOException;  import java.io.InputStream;  import java.nio.ByteBuffer;  import java.nio.CharBuffer;  import java.nio.channels.FileChannel;   import com.eric.reflect.ExecuteTimerHandler;   public class ReadFileTools implements IReadFileTools {            /**       *        * execute readByBufferReader spend 444 million sencond!          execute readByBufferedInputStreamNoArray spend 27903 million sencond!          execute readByBufferedInputStream spend 192 million sencond!          execute readByChannel spend 484 million sencond!          execute readByChannelMap spend 42 million sencond!          execute readByDataInputStream spend 440 million sencond!       *        * @param args       * @throws Exception       */     public static final int     BUFFSIZE     = 180;      public static final String  root         = "E:\\sourcecode\\corejava\\src\\com\\eric\\io\\";      public static final boolean printContext    = false;            public static void main(String[] args) throws Exception {          String file = root + "VISA_INPUT_FULL";          IReadFileTools bi = (IReadFileTools) ExecuteTimerHandler.newInstance(new ReadFileTools());          bi.readByBufferReader(file);          bi.readByBufferedInputStreamNoArray(file);          bi.readByBufferedInputStream(file);          bi.readByChannel(file);          bi.readByChannelMap(file);          bi.readByDataInputStream(file);      }            /*       * execute readBuffer spend 421 million sencond! execute readByte spend       * 36172 million sencond!       */     public String readByBufferReader(String file) {          StringBuilder sb = new StringBuilder();          try {              BufferedReader br = new BufferedReader(new FileReader(new File(file)));              String line;              long count = 0;              while ((line = br.readLine()) != null) {                  if (printContext) {                      System.out.println(line);                  }                                    sb.append(line);                  count += line.length();              }              br.close();          } catch (Exception ex) {              ex.printStackTrace();          }          return sb.toString();      }            public void readByDataInputStream(String file) throws Exception {                    DataInputStream dis = new DataInputStream(new ByteArrayInputStream(new ReadFileTools().readByBufferReader(file).getBytes()));          while (dis.available() > 0) {              char c = (char) dis.read();              if (printContext) {                  System.out.println(c);              }          }      }      //this method not use byte array to get byte      public String readByBufferedInputStreamNoArray(String file) {          try {              InputStream is = new BufferedInputStream(new FileInputStream(new File(file)));              while (is.available() > 0) {                  char c = (char) is.read();                  if (printContext) {                      System.out.println(c);                  }              }          } catch (Exception ex) {              ex.printStackTrace();          }          return null;      }      //use byte array to get bytes from file      public void readByBufferedInputStream(String file) throws Exception {          BufferedInputStream input = new BufferedInputStream(new FileInputStream(file));          byte[] bytes = new byte [BUFFSIZE];          while (input.available() > 0) {              input.read(bytes);          }      }      //use file channel to get byte from file      public void readByChannel(String file) throws Exception {                    FileChannel in = new FileInputStream(file).getChannel();          ByteBuffer buffer = ByteBuffer.allocate(BUFFSIZE);          while (in.read(buffer) != -1) {              buffer.flip(); // Prepare for writing              if (printContext) {                  System.out.println(buffer.getChar());              }              buffer.clear(); // Prepare for reading          }          in.close();      }      //use MappedByteBuffer to read byte from file      public void readByChannelMap(String file) throws Exception {          FileChannel fc = new FileInputStream(new File(file)).getChannel();          CharBuffer cb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()).asCharBuffer();          char c;          while (cb.hasRemaining())              c = cb.get();          if (printContext) {              System.out.println(c);          }          fc.close();      }            public void copyFileByChannel(String file, String file2) throws Exception {                    FileChannel in = new FileInputStream(file).getChannel();          FileChannel out = new FileOutputStream(file2).getChannel();          ByteBuffer buffer = ByteBuffer.allocate(BUFFSIZE);          while (in.read(buffer) != -1) {              buffer.flip(); // Prepare for writing              out.write(buffer);              buffer.clear(); // Prepare for reading          }      }            public void test() {          System.out.println("test");      }            public void copyFile(String source, String dest) throws Exception {          BufferedReader br = new BufferedReader(new FileReader(new File(source)));          BufferedWriter bw = new BufferedWriter(new FileWriter(new File(dest)));          String temp;          while ((temp = br.readLine()) != null) {              bw.write(temp + "\n");          }      }            public void storingAndRecoveringData(String file) throws Exception {          DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));          DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));          dos.writeBoolean(false);          dos.writeByte(10);          dos.writeDouble(1213654);          dos.writeUTF("aihua");          dos.close();          System.out.println(dis.readBoolean());          System.out.println(dis.readByte());          System.out.println(dis.readDouble());          System.out.println(dis.readUTF());          dis.close();                }            public void doCopyFile(String src, String dest) throws IOException {          File srcFile = new File(src);          File destFile = new File(dest);          if (destFile.exists()) {              boolean d = destFile.delete();                            if (d) {                  System.out.print("刪除成功!");              } else {                  System.out.print("刪除失敗!");              }          }          BufferedInputStream input = new BufferedInputStream(new FileInputStream(srcFile));          try {              BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(destFile));              try {                  byte[] buffer = new byte [4096];                  int n = 0;                  while (-1 != (n = input.read(buffer))) {                      output.write(buffer, 0, n);                  }                  System.out.println("Copy Successful::" + dest);              } finally {                  try {                      if (output != null) {                          output.close();                      }                  } catch (IOException ioe) {                      ioe.printStackTrace();                  }              }          } finally {              try {                  if (input != null) {                      input.close();                  }              } catch (IOException ioe) {                  System.out.println("failed src file:" + src + " reason:" + ioe.getMessage());              }          }      }        }   /*   *    * History:   *    *    *    * $Log: $   */

到此,關于“Java中常見的IO讀寫效率對比”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尚志市| 开鲁县| 桃园县| 庐江县| 华蓥市| 凭祥市| 磐安县| 安溪县| 关岭| 武定县| 上饶市| 肥西县| 灵武市| 固始县| 长治市| 眉山市| 旬阳县| 库尔勒市| 黎川县| 洞口县| 安义县| 文登市| 巨野县| 咸丰县| 新野县| 安阳县| 奈曼旗| 清水县| 盐津县| 临武县| 南陵县| 盈江县| 黄冈市| 廊坊市| 广宁县| 大连市| 镇坪县| 台州市| 平罗县| 阿城市| 新密市|