1. 程式人生 > 其它 >web開發裡html的用法,詳細介紹了裡面的各種標籤、用法

web開發裡html的用法,詳細介紹了裡面的各種標籤、用法

IO流

流是一組有序的資料序列

Java由資料流處理輸入/輸出模式,程式從指向源的輸入流中讀取源中的資料,通過向輸出流中寫入資料把資訊傳遞到目的地,以下圖片可以說明,圖片分別為輸入模式、輸出模式

InputStream和OutputStream

InputStream類和OutputStream類都可以通過檔案物件來對檔案進行操作,看如下程式碼:

public static void readByteFromFile() throws IOException {
       File file = new File("D:/test.txt");
       byte[] bytes = new byte[(int) file.length()];
       InputStream is = new FileInputStream(file);
       int size = is.read(bytes);
       System.out.println(size+" "+new String(bytes));
       is.close();
  }
  1. 通過D盤的檔案來建立一個File物件

  2. 建立一個位元組型陣列,陣列長度為file.length,此時陣列內的值都為預設值0

  3. 然後通過FileInputStream實現類將InputStream抽象類例項化,並將file載入進去

  4. 執行read方法,返回一個整數形式的位元組數,同時給bytes陣列賦值

  5. 輸出檔案內容

  6. 將流關閉

接下來用OutputStream類將資料流寫入目的地

public static void writeByteToFile() throws IOException {
  //1.建立一個字串
       String hello = new String("Hello World!");
  //2.通過getBytes方法獲取字串的位元組流,返回一個byte型陣列
       byte[] bytes = hello.getBytes();
  //3.獲得一個檔案物件
       File file = new File("D:/test.txt");
  //4.例項化OutputStream,將file物件載入進去
       OutputStream os = new FileOutputStream(file);
  //5.呼叫write方法,將位元組陣列寫入次輸出流
       os.write(bytes);
  //6.將輸出流關閉
       os.close();
  }

FileReader類和FileWrite類

將上面的例子修改一下

  • FileReader

public static void readByteFromFile() throws IOException {
       File file = new File("D:/test.txt");
       char[] chars = new char[(int) file.length()];
       Reader reader = new FileReader(file);
       int size = reader.read(chars);
       System.out.println(size+" "+new String(reader));
       reader.close();
  }

程式碼順序不變,只是將位元組陣列改成了字元陣列,將FileOutputStream類寫成了FileReader類,結果都是一樣,那麼兩個類的不同點在哪裡呢?

原來FileOutputStream這個類只提供了對位元組或位元組陣列的讀取方法,由於漢字在檔案中佔用兩個位元組,如果使用位元組流,讀取不好可能會出現亂碼現象,採用字元流就可以避免

//System.out.println(size+" "+new String(reader));
       System.out.println(size+" "+new String(chars,0,size));

可以將offset的值改變,測試一下

  • FileWrite類似

public static void writeCharToFile() throws IOException{
       String hello = new String("hello world!");
       File file = new File("D:/test.txt");
       Writer os = new FileWriter(file);
       os.write(hello);
       os.close();
  }

這裡的write方法可以直接傳入String字串,不需要對字串進行操作

BufferedReader類與BufferedWriter類

package com.jiang.io;

import java.io.*;

public class Student {
   public static void main(String[] args) {
       String content[] = {"明日科技","Java部","快速入門"};
       File file = new File("D:/test.txt");
       try {
//           FileWriter fw = new FileWriter(file);
           BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
           for (int i = 0; i < content.length; i++) {
               bufw.write(content[i]);
               bufw.newLine();
          }
           bufw.flush();
           bufw.close();
           bufw.close();
      }catch (Exception e)
      {
           e.printStackTrace();
      }

       try {
//           FileReader fr = new FileReader(file);
           BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
           String s = null;
           int i = 0;
           while ((s = bufferedReader.readLine())!=null)
          {
               i++;
               System.out.println(s);
          }


           bufferedReader.close();


      }catch (Exception e)
      {
           e.printStackTrace();
      }
  }
}
  • 這裡需要注意的是BufferedWrite和BufferedReader的構造方法引數需要傳入一個引用物件,使用readLine()方法不用傳參,直接返回檔案的一行資料

 

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