溫馨提示×

溫馨提示×

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

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

關(guān)于Java中的IO流總結(jié)(推薦)

發(fā)布時間:2020-10-02 06:13:36 來源:腳本之家 閱讀:152 作者:jingxian 欄目:編程語言

1、 流的繼承關(guān)系,以及字節(jié)流和字符流。

2、 節(jié)點流FileOutputStream和FileInputStream和處理流BufferedInputStream和BufferedOutputStream。以及對應(yīng)的FileOutputWriter,F(xiàn)ileInputReader,BufferedInputReader,BufferedOutputWriter。

3、 轉(zhuǎn)換流InputStreamReader和OutputStreamWriter

一:流的繼承關(guān)系

字節(jié)流

關(guān)于Java中的IO流總結(jié)(推薦)

字符流

關(guān)于Java中的IO流總結(jié)(推薦)

字符流和字節(jié)流的使用范圍:字節(jié)流一般用來處理圖像,視頻,以及PPT,Word類型的文件。字符流一般用于處理純文本類型的文件,如TXT文件等,字節(jié)流可以用來處理純文本文件,但是字符流不能用于處理圖像視頻等非文本類型的文件。

二:處理流BufferedReader,BufferedWriter,BufferedInputStream

BufferedOutputsStream,都要包上一層節(jié)點流。也就是說處理流是在節(jié)點流的基礎(chǔ)之上進(jìn)行的,帶有Buffered的流又稱為緩沖流,緩沖流處理文件的輸入輸出的速度是最快的。所以一般緩沖流的使用比較多。

下面是兩個簡單的文件復(fù)制的實例:

public class MycopyTest {
  public static void main(String[] args) {
    File src = new File("D:/1.jpg");
    // D:/1.jpg必須的存在不然會報錯
    File dest = new File("D:/2.jpg");
    // 如果D:/2.jpg存在則覆蓋,如果不存在則新建
    streamCopy(src, dest);
  }
private static void readCopy(File src,File dest)
  {
    FileReader fr=null;
    FileWriter fw=null;
    BufferedReader br=null;
    BufferedWriter bw=null;
    try {
      fr=new FileReader(src);
      fw=new FileWriter(dest);
      br=new BufferedReader(fr);
      bw=new BufferedWriter(fw);
      String str;
      while((str=br.readLine())!=null)
      {
        bw.write(str);
        bw.newLine();
      }
    }catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    try {
      bw.close();
      br.close();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }
  private static void streamCopy(File src, File dest) {
    FileInputStream fis = null;
    FileOutputStream fos = null;
    BufferedInputStream bis = null;
    BufferedOutputStream bos = null;
    try {
      fis = new FileInputStream(src);
      fos = new FileOutputStream(dest);
      bis = new BufferedInputStream(fis);
      bos = new BufferedOutputStream(fos);
      int len;
      byte[] b = new byte[1024];
      while ((len = bis.read(b)) != -1) {
        bos.write(b, 0, len);
        // bos.write(b,0,len);是把讀到數(shù)組的大小字節(jié)寫入
        // bos.write(b);最后一次如果數(shù)組未寫滿的話就會多讀。
      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    try {
      bos.close();
      bis.close();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

 三:轉(zhuǎn)換流InputStreamReader和OutputStreamWriter

關(guān)于Java中的IO流總結(jié)(推薦)

 轉(zhuǎn)換流的作用,文本文件在硬盤中以字節(jié)流的形式存儲時,通過InputStreamReader讀取后轉(zhuǎn)化為字符流給程序處理,程序處理的字符流通過OutputStreamWriter轉(zhuǎn)換為字節(jié)流保存。

public class InputStreamWriterTest {
  public static void main(String[] args) {
    File src = new File("D:/Files/狗屁.txt");
    File dest = new File("D:/Files/斯密斯.txt");
    BufferedWriter bw = null;
    BufferedReader br = null;
    FileInputStream fis = null;
    FileOutputStream fos = null;
    try {
      fis = new FileInputStream(src);
      fos = new FileOutputStream(dest);
      InputStreamReader ir = new InputStreamReader(fis, "GBK");
      OutputStreamWriter ow = new OutputStreamWriter(fos, "GBK");
      bw = new BufferedWriter(ow);
      br = new BufferedReader(ir);
      String str;
      while ((str = br.readLine()) != null) {
        bw.write(str);
        bw.newLine();
        bw.flush();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    try {
      bw.close();
      br.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

以上這篇關(guān)于Java中的IO流總結(jié)(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI