最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java IO 之文件讀寫簡單實例

 更新時間:2017年06月29日 15:38:23   投稿:lqh  
這篇文章主要介紹了Java IO 之文件讀寫簡單實例的相關(guān)資料,需要的朋友可以參考下

Java IO 之文件讀寫簡單實例

1.文件讀

public class ReadFromFile {
  /**
   * 以字節(jié)為單位讀取文件,常用于讀二進制文件,如圖片、聲音、影像等文件。
   */
  public static void readFileByBytes(String fileName) {
    File file = new File(fileName);
    InputStream in = null;
    try {
      System.out.println("以字節(jié)為單位讀取文件內(nèi)容,一次讀一個字節(jié):");
      // 一次讀一個字節(jié)
      in = new FileInputStream(file);
      int tempbyte;
      while ((tempbyte = in.read()) != -1) {
        System.out.write(tempbyte);
      }
      in.close();
    } catch (IOException e) {
      e.printStackTrace();
      return;
    }
    try {
      System.out.println("以字節(jié)為單位讀取文件內(nèi)容,一次讀多個字節(jié):");
      // 一次讀多個字節(jié)
      byte[] tempbytes = new byte[100];
      int byteread = 0;
      in = new FileInputStream(fileName);
      ReadFromFile.showAvailableBytes(in);
      // 讀入多個字節(jié)到字節(jié)數(shù)組中,byteread為一次讀入的字節(jié)數(shù)
      while ((byteread = in.read(tempbytes)) != -1) {
        System.out.write(tempbytes, 0, byteread);
      }
    } catch (Exception e1) {
      e1.printStackTrace();
    } finally {
      if (in != null) {
        try {
          in.close();
        } catch (IOException e1) {
        }
      }
    }
  }

  /**
   * 以字符為單位讀取文件,常用于讀文本,數(shù)字等類型的文件
   */
  public static void readFileByChars(String fileName) {
    File file = new File(fileName);
    Reader reader = null;
    try {
      System.out.println("以字符為單位讀取文件內(nèi)容,一次讀一個字節(jié):");
      // 一次讀一個字符
      reader = new InputStreamReader(new FileInputStream(file));
      int tempchar;
      while ((tempchar = reader.read()) != -1) {
        // 對于windows下,\r\n這兩個字符在一起時,表示一個換行。
        // 但如果這兩個字符分開顯示時,會換兩次行。
        // 因此,屏蔽掉\r,或者屏蔽\n。否則,將會多出很多空行。
        if (((char) tempchar) != '\r') {
          System.out.print((char) tempchar);
        }
      }
      reader.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
    try {
      System.out.println("以字符為單位讀取文件內(nèi)容,一次讀多個字節(jié):");
      // 一次讀多個字符
      char[] tempchars = new char[30];
      int charread = 0;
      reader = new InputStreamReader(new FileInputStream(fileName));
      // 讀入多個字符到字符數(shù)組中,charread為一次讀取字符數(shù)
      while ((charread = reader.read(tempchars)) != -1) {
        // 同樣屏蔽掉\r不顯示
        if ((charread == tempchars.length)
            && (tempchars[tempchars.length - 1] != '\r')) {
          System.out.print(tempchars);
        } else {
          for (int i = 0; i < charread; i++) {
            if (tempchars[i] == '\r') {
              continue;
            } else {
              System.out.print(tempchars[i]);
            }
          }
        }
      }

    } catch (Exception e1) {
      e1.printStackTrace();
    } finally {
      if (reader != null) {
        try {
          reader.close();
        } catch (IOException e1) {
        }
      }
    }
  }

  /**
   * 以行為單位讀取文件,常用于讀面向行的格式化文件
   */
  public static void readFileByLines(String fileName) {
    File file = new File(fileName);
    BufferedReader reader = null;
    try {
      System.out.println("以行為單位讀取文件內(nèi)容,一次讀一整行:");
      reader = new BufferedReader(new FileReader(file));
      String tempString = null;
      int line = 1;
      // 一次讀入一行,直到讀入null為文件結(jié)束
      while ((tempString = reader.readLine()) != null) {
        // 顯示行號
        System.out.println("line " + line + ": " + tempString);
        line++;
      }
      reader.close();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (reader != null) {
        try {
          reader.close();
        } catch (IOException e1) {
        }
      }
    }
  }

  /**
   * 隨機讀取文件內(nèi)容
   */
  public static void readFileByRandomAccess(String fileName) {
    RandomAccessFile randomFile = null;
    try {
      System.out.println("隨機讀取一段文件內(nèi)容:");
      // 打開一個隨機訪問文件流,按只讀方式
      randomFile = new RandomAccessFile(fileName, "r");
      // 文件長度,字節(jié)數(shù)
      long fileLength = randomFile.length();
      // 讀文件的起始位置
      int beginIndex = (fileLength > 4) ? 4 : 0;
      // 將讀文件的開始位置移到beginIndex位置。
      randomFile.seek(beginIndex);
      byte[] bytes = new byte[10];
      int byteread = 0;
      // 一次讀10個字節(jié),如果文件內(nèi)容不足10個字節(jié),則讀剩下的字節(jié)。
      // 將一次讀取的字節(jié)數(shù)賦給byteread
      while ((byteread = randomFile.read(bytes)) != -1) {
        System.out.write(bytes, 0, byteread);
      }
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (randomFile != null) {
        try {
          randomFile.close();
        } catch (IOException e1) {
        }
      }
    }
  }

  /**
   * 顯示輸入流中還剩的字節(jié)數(shù)
   */
  private static void showAvailableBytes(InputStream in) {
    try {
      System.out.println("當前字節(jié)輸入流中的字節(jié)數(shù)為:" + in.available());
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    String fileName = "C:/temp/newTemp.txt";
    ReadFromFile.readFileByBytes(fileName);
    ReadFromFile.readFileByChars(fileName);
    ReadFromFile.readFileByLines(fileName);
    ReadFromFile.readFileByRandomAccess(fileName);
  }
}

2. 文件寫

public class AppendToFile {
  /**
   * A方法追加文件:使用RandomAccessFile
   */
  public static void appendMethodA(String fileName, String content) {
    try {
      // 打開一個隨機訪問文件流,按讀寫方式
      RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
      // 文件長度,字節(jié)數(shù)
      long fileLength = randomFile.length();
      //將寫文件指針移到文件尾。
      randomFile.seek(fileLength);
      randomFile.writeBytes(content);
      randomFile.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  /**
   * B方法追加文件:使用FileWriter
   */
  public static void appendMethodB(String fileName, String content) {
    try {
      //打開一個寫文件器,構(gòu)造函數(shù)中的第二個參數(shù)true表示以追加形式寫文件
      FileWriter writer = new FileWriter(fileName, true);
      writer.write(content);
      writer.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    String fileName = "C:/temp/newTemp.txt";
    String content = "new append!";
    //按方法A追加文件
    AppendToFile.appendMethodA(fileName, content);
    AppendToFile.appendMethodA(fileName, "append end. \n");
    //顯示文件內(nèi)容
    ReadFromFile.readFileByLines(fileName);
    //按方法B追加文件
    AppendToFile.appendMethodB(fileName, content);
    AppendToFile.appendMethodB(fileName, "append end. \n");
    //顯示文件內(nèi)容
    ReadFromFile.readFileByLines(fileName);
  }
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Java計算器核心算法代碼實現(xiàn)

    Java計算器核心算法代碼實現(xiàn)

    今天小編就為大家分享一篇關(guān)于Java計算器核心算法代碼實現(xiàn),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 詳解Java Selenium中的鍵盤控制操作

    詳解Java Selenium中的鍵盤控制操作

    這篇文章主要為大家介紹了如何使用java代碼利用Selenium 控制瀏覽器中需要用到的鍵盤操作。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-01-01
  • Java程序員的10道常見的XML面試問答題(XML術(shù)語詳解)

    Java程序員的10道常見的XML面試問答題(XML術(shù)語詳解)

    包括web開發(fā)人員的Java面試在內(nèi)的各種面試中,XML面試題在各種編程工作的面試中很常見。XML是一種成熟的技術(shù),經(jīng)常作為從一個平臺到其他平臺傳輸數(shù)據(jù)的標準
    2014-04-04
  • MyBatis最常用的增刪改查操作詳解

    MyBatis最常用的增刪改查操作詳解

    這篇文章主要介紹了MyBatis中常見的增、刪、改、查(CRUD)操作,通過創(chuàng)建數(shù)據(jù)庫表、實體類、Mapper接口及映射文件,我們實現(xiàn)了對user表的增刪改查操作,MyBatis簡化了數(shù)據(jù)庫操作,需要的朋友可以參考下
    2024-12-12
  • Java貪心算法之Prime算法原理與實現(xiàn)方法詳解

    Java貪心算法之Prime算法原理與實現(xiàn)方法詳解

    這篇文章主要介紹了Java貪心算法之Prime算法原理與實現(xiàn)方法,簡單描述了Prime算法的概念、原理、實現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-09-09
  • 如何解決websocket開啟多個頁面訪問同一個連接會失效的問題

    如何解決websocket開啟多個頁面訪問同一個連接會失效的問題

    使用WebSocket時,若多個頁面訪問同一個WebSocket連接可能會導致連接失效,遇到這個問題時,可以通過在SpringBoot中使用@ServerEndpoint注解并添加@Component來解決,出現(xiàn)連接錯誤通常是因為WebSocket連接接收到的是一個GET請求
    2024-09-09
  • 詳解Spring+Hiernate整合

    詳解Spring+Hiernate整合

    這篇文章主要介紹了詳解Spring+Hiernate整合,spring整合hibernate主要介紹以xml方式實現(xiàn),有興趣的可以了解一下。
    2017-04-04
  • Spring中使用ehcache緩存的方法及原理詳解

    Spring中使用ehcache緩存的方法及原理詳解

    這篇文章主要介紹了Spring中使用ehcache緩存的方法及原理詳解,ehcache具有很強的靈活性,提供了LRU、LFU和FIFO緩存淘汰算法,Ehcache 1.2引入了最近最少使用、最久未使用和先進先 出緩存淘汰算法, 構(gòu)成了完整的緩存淘汰算法,,需要的朋友可以參考下
    2024-01-01
  • Java集合ArrayDeque類實例分析

    Java集合ArrayDeque類實例分析

    這篇文章主要介紹了Java集合ArrayDeque類實例分析的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Spring使用xml方式整合第三方框架流程詳解

    Spring使用xml方式整合第三方框架流程詳解

    這篇文章主要介紹了Spring使用xml方式整合第三方框架流程,Spring會在應(yīng)用上下文中為某個bean尋找其依賴的bean,Spring中bean有三種裝配機制,分別是:在xml中顯式配置、在java中顯式配置、隱式的bean發(fā)現(xiàn)機制和自動裝配
    2023-02-02

最新評論

凤城市| 宜黄县| 石棉县| 新泰市| 荔浦县| 利津县| 安远县| 来安县| 余干县| 黔东| 上林县| 衡山县| 霍林郭勒市| 太谷县| 朝阳区| 宽甸| 温州市| 凤山市| 治县。| 齐河县| 苏尼特左旗| 衡东县| 乌鲁木齐县| 沙洋县| 赤城县| 综艺| 平顶山市| 罗甸县| 织金县| 万盛区| 陇西县| 读书| 杭锦后旗| 芜湖市| 固原市| 廊坊市| 合肥市| 仪征市| 涡阳县| 长葛市| 察雅县|