乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      java io常用類總結

       sxw6wduc8b7bn5 2019-11-19

      讀寫數(shù)據(jù)是java開發(fā)過程中經(jīng)常需要做的,本篇文章將我們平時常用的java io處理類做個總結,同時給出相關demo。

      可以看得出來,JAVA IO主要有這四個類InputStream、OutputStream、Reader、Writer來處理,要處理字節(jié)流的就用InputStream、OutputStream,要處理字符流,就用Reader、Writer,現(xiàn)實中根據(jù)需要,我們選擇他們的相關子類進行數(shù)據(jù)的讀寫。給出類圖:

      根據(jù)處理媒介的不同進行劃分

      下面給出常用的IO處理demo

      /**

       * 項目名稱(中文)

       * 項目名稱(英文)

       * Copyright (c) 2018 ChinaPay Ltd. All Rights Reserved.

       */

      package com.figo.study.test;

      import java.io.BufferedReader;

      import java.io.BufferedWriter;

      import java.io.DataInputStream;

      import java.io.File;

      import java.io.FileInputStream;

      import java.io.FileOutputStream;

      import java.io.FileReader;

      import java.io.FileWriter;

      import java.io.InputStream;

      import java.io.ObjectInputStream;

      import java.io.ObjectOutputStream;

      import java.io.OutputStream;

      import java.io.Reader;

      import java.io.Serializable;

      import java.io.StringWriter;

      import java.io.Writer;

      /**

       * IO操作總結 IO按讀寫劃分可以分為輸入流和輸出流 IO,

       * 按處理媒介來劃分可以分為字節(jié)流和字符流 

       * 另外為了處理不同的數(shù)據(jù)類型,輸入輸出流可以層層包裝

       * 比如處理文件數(shù)據(jù)的FileInputStream,FileOutputStream.

       * 另外處理網(wǎng)絡的IO一般使用Socket,jdk1.4及以上版本又推出了NIO, NIO non-blocking

       * io非阻塞的開源項目比如MINA,NETTY,本demo討論io

       * 

       * @author figo

       * @version 1.0 2018-6-12 改訂

       * @since 1.0

       */

      public class TestIO {

          /**

           * .

           * 

           * @param args

           */

          public static void main(String[] args) {

              // testInputStreamAndOutputStream();

              // testReaderAndWriter();

      //        testBufferReaderAndWriter();

              testObjectInputStreamAndObjectOutputStream();

          }

          /**

           * 字節(jié)流輸入FileInputStream輸出FileOutputStream 文件超大有可能會OOM

           */

          public static void testInputStreamAndOutputStream() {

              try {

                  // 寫入數(shù)據(jù)

                  String hello = new String('hello world!');

                  byte[] byteArray = hello.getBytes();

                  File file = new File('E:\\學習資料\\java學習\\testIO\\iostream.txt');

                  // 因為是用字節(jié)流來寫媒介,所以對應的是OutputStream

                  // 又因為媒介對象是文件,所以用到子類是FileOutputStream

                  OutputStream os = new FileOutputStream(file);

                  os.write(byteArray);

                  os.close();

                  // 讀取數(shù)據(jù)

                  byte[] byteArrayNew = new byte[(int) file.length()];

                  // 因為是用字節(jié)流來讀媒介,所以對應的是InputStream

                  // 又因為媒介對象是文件,所以用到子類是FileInputStream

                  InputStream is = new FileInputStream(file);

                  int size = is.read(byteArrayNew);

                  System.out.println('大小:' + size + ';內容:' + new String(byteArray));

                  is.close();

              } catch (Exception ex) {

                  ex.printStackTrace();

              }

          }

          /**

           * 字符流輸入FileReader輸出FileWriter 文件超大有可能會OOM

           */

          public static void testReaderAndWriter() {

              try {

                  // 寫入數(shù)據(jù)

                  String hello = new String('hello worLd!');

                  File file = new File(

                          'E:\\學習資料\\java學習\\testIO\\readerAndwriter.txt');

                  // 因為是用字符流來讀媒介,所以對應的是Writer,又因為媒介對象是文件,所以用到子類是FileWriter

                  Writer os = new FileWriter(file);

                  os.write(hello);

                  os.close();

                  // 讀取數(shù)據(jù)

                  // 因為是用字符流來讀媒介,所以對應的是Reader

                  // 又因為媒介對象是文件,所以用到子類是FileReader

                  Reader reader = new FileReader(file);

                  char[] byteArray = new char[(int) file.length()];

                  int size = reader.read(byteArray);

                  System.out.println('大小:' + size + ';內容:' + new String(byteArray));

                  reader.close();

              } catch (Exception ex) {

                  ex.printStackTrace();

              }

          }

          /**

           * 緩存字符輸入BufferedReader和輸出BufferedWriter 緩存一定大小字符流后再一次性輸入輸出

           * 每次一個字符一個字符的讀寫肯定影響性能的 每次讀寫緩存大小的數(shù)據(jù)量,一般不會OOM,批量讀寫明顯會提高效率

           */

          public static void testBufferReaderAndWriter() {

              try {

                  // 寫入數(shù)據(jù)

                  String hello = new String('hello worLd!');

                  File file = new File(

                          'E:\\學習資料\\java學習\\testIO\\bufferReaderAndWriter.txt');

                  // 因為是用字符流來讀媒介,所以對應的是Writer,又因為媒介對象是文件,所以用到子類是FileWriter

                  Writer os = new FileWriter(file);

                  // 外部再包裝一層buffer 不設置緩沖大小,默認8k,也可以自己通過這個構造函數(shù)指定

                  // BufferedWriter(Writer paramWriter, int paramInt)

                  BufferedWriter bw = new BufferedWriter(os);

                  bw.write(hello);

                  // 寫一行換一行

                  bw.newLine();

                  bw.close();

                  os.close();

                  // 讀取數(shù)據(jù)

                  // 因為是用字符流來讀媒介,所以對應的是Reader

                  // 又因為媒介對象是文件,所以用到子類是FileReader

                  Reader reader = new FileReader(file);

                  // 外部再包裝一層buffer 不設置緩沖大小,默認8k,也可以自己通過這個構造函數(shù)指定

                  // BufferedReader(Reader paramReader, int paramInt)

                  BufferedReader bufferReader = new BufferedReader(reader);

                  String tempString = null;

                  while ((tempString = bufferReader.readLine()) != null) {

                      // 顯示行號

                      System.out.println(tempString);

                  }

                  bufferReader.close();

                  reader.close();

              } catch (Exception ex) {

                  ex.printStackTrace();

              }

          }

          /**

           * 對象讀寫到文件ObjectInputStream和ObjectOutputStream .

           */

          public static void testObjectInputStreamAndObjectOutputStream() {

              try {

                  //定義一個對象

                  Student student=new Student();

                  student.setName('abc');

                  student.setSex('男');

                  student.setGrade('一年級');

                  student.setAddress('上海');

                  student.setMobile('15812345678');

                  //對象寫入文件

                  FileOutputStream fos=new FileOutputStream('E:\\學習資料\\java學習\\testIO\\Student.txt');

                  ObjectOutputStream oos=new ObjectOutputStream(fos);

                  oos.writeObject(student);

                  oos.flush();

                  oos.close();

                  //從文件讀取對象

                  FileInputStream fis=new FileInputStream('E:\\學習資料\\java學習\\testIO\\Student.txt');

                  ObjectInputStream ois=new ObjectInputStream(fis);

                  Student studentNew=(Student)ois.readObject();

                  System.out.println(studentNew.toString());

              } catch (Exception ex) {

                  ex.printStackTrace();

              }

          }

          /**

           * 一定記得實現(xiàn)Serializable,否則無法序列化成字節(jié)流

           * @author figo

           * .

           */

          public static class Student implements Serializable{

              /**

               * .

               */

              private static final long serialVersionUID = 1L;

              String name;

              String sex;

              String grade;

              String address;

              String mobile;

              public String getName() {

                  return name;

              }

              public void setName(String name) {

                  this.name = name;

              }

              public String getSex() {

                  return sex;

              }

              public void setSex(String sex) {

                  this.sex = sex;

              }

              public String getGrade() {

                  return grade;

              }

              public void setGrade(String grade) {

                  this.grade = grade;

              }

              public String getAddress() {

                  return address;

              }

              public void setAddress(String address) {

                  this.address = address;

              }

              public String getMobile() {

                  return mobile;

              }

              public void setMobile(String mobile) {

                  this.mobile = mobile;

              }

              @Override

              public String toString() {

                  return 'Student [name=' + name + ', sex=' + sex + ', grade='

                          + grade + ', address=' + address + ', mobile=' + mobile

                          + ']';

              }

          }

      }

       /**
           * 
           * 字符轉字節(jié)流InputStreamReader和OutputStreamWriter . 
           * 這兩個類的好處是可以指定讀取和寫入的字符編碼
           */
          public static void testInputStreamReaderAndOutputStreamWriter() {


              try {
                  //寫文件
                  String filePathAndName = 'E:\\學習資料\\java學習\\testIO\\InputStreamReaderWriter.txt';
                  File fileWrite = new File(filePathAndName);
                  if (!fileWrite.exists()) {
                      fileWrite.createNewFile();
                  }
                  OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(fileWrite), 'UTF-8');
                  BufferedWriter writer = new BufferedWriter(write);
                  String fileContent = 'hello,world,你好世界!';
                  writer.write(fileContent);
                  writer.close();
                  //讀文件
                  File fileRead = new File(filePathAndName);
                  if (fileRead.isFile() && fileRead.exists()) {
                      InputStreamReader read = new InputStreamReader(
                              new FileInputStream(fileRead), 'UTF-8');
                      BufferedReader reader = new BufferedReader(read);
                      String line;
                      StringBuffer sringBuffer=new StringBuffer();
                      while ((line = reader.readLine()) != null) {
                          //這樣也可以指定編碼,但是會new很多的String對象
      //                  String newLine=new String(line.getBytes('UTF-8'));
                          sringBuffer.append(line);
                      }
                      System.out.println(fileContent);
                      read.close();
                  }


              } catch (Exception ex) {
                  ex.printStackTrace();
              }
          }

      另外我們在處理文件讀寫經(jīng)常用到java.io.File,這個類比較簡單,給出常用方法大家看看就會了:

      好了,大家可以自己動手試一下。

      參考文章

      Java IO

      https://blog.csdn.net/suifeng3051/article/details/48344587

      Java的IO操作---File類

      https://www.cnblogs.com/alsf/p/5746480.html

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多