java中的IO

Java中的IO

IO流也是種對象,Java中的一切都是對象。

IO操作的目標(biāo):從數(shù)據(jù)源中讀取數(shù)據(jù),以及將數(shù)據(jù)讀寫到數(shù)據(jù)目的地當(dāng)中。

IO分類
1.輸入流/輸出流。
2.字節(jié)流/字符流。
每次讀寫1~n個字節(jié)或字符。
字節(jié)流的核心類,InputStream(abstract)<----FileInputStream Int read(byte[] b, int off, int len),以字節(jié)的形式讀取數(shù)據(jù),放入byte型的數(shù)組b中。Int off,是偏移量,len為長度。
OutPutStream(abstract)<----FileOutputStream Void write(byte[]b, int off, int len);
*字節(jié)流讀取:

import java.io.*;
  class test{
  public static void main(String argsrgs[]){
       //聲明輸入,輸出流引用
       FileInputStream fis = null;
       FileOutputStream fos = null;
       try{
             //生成代表輸入,輸出流的對象
             fis = new FileInputStream("e:/notpad/from.txt");
             fos = new FileOutputStream("e:/notpad/to.txt");
             //生成一個字節(jié)數(shù)組
             byte [] buffer = new byte[100];
             //read()返回值為int類型,這一次我們讀取了多少字節(jié)的數(shù)據(jù)
             //調(diào)用輸入字節(jié)流的read()方法,讀取數(shù)據(jù)
             //調(diào)用輸出字節(jié)流的write()方法,讀取數(shù)據(jù)
             int temp = fis.read(buffer, 0 ,buffer.length);
             fos.write(buffer, 0 ,temp);
             /* 按字節(jié)依次取出在屏幕上
             for(int i = 0 ; i <= buffer.length; i++){
                  System.out.println(buffer[i]);
             } *//* 將字節(jié)轉(zhuǎn)換成字符串,存放于S中
             String s = new String(buffer);
             s = s.trim();
             System.out.println(s); */
       }
       catch(Exception e){
             e.printStackTrace();
       }
       finally{  }
  }
 }

當(dāng)讀取大文件時:
//生成一個字節(jié)數(shù)組
byte [] buffer = new byte [1024];
//read()返回值為int類型,這一次我們讀取了多少字節(jié)的數(shù)據(jù)
//調(diào)用輸入字節(jié)流的read()方法,讀取數(shù)據(jù)
//調(diào)用輸出字節(jié)流的write()方法,讀取數(shù)據(jù)
//讀取大文件時,應(yīng)循環(huán)讀取,
//當(dāng)read()返回值為-1時,表示已經(jīng)讀完文件,利用break跳出當(dāng)前循環(huán)

while(true){
int temp = fis.read(buffer, 0 , buffer.length);
    if(temp == -1){
        break;
        }
    fos.write(buffer, 0 ,temp);
    }

finally{
        //關(guān)閉輸入輸出管道
        try{
            fis.close();
            fos.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

字符流讀取大文件時:
//字符流:讀寫時以字符為基礎(chǔ)
//字符輸入流都是Reader的子類<-- FileReader
//int read(char [] c , int off , int len)
//字符輸出流都是Writer的子類<---FileWriter
// void writer(char [] c ,int off ,int len)
3.節(jié)點流/處理流。
處理流是在節(jié)點流的基礎(chǔ)上對數(shù)據(jù)在進行加工。(eg:水管外邊的加熱管道)
字節(jié)流是被裝飾者,處理流BufferedReader是裝飾者。

  1. 字符輸入處理流BufferedReader的使用
    處理流中的方法:一次讀取一行public String readLine() throws IOException
    生成BufferedReader的對象:
    BufferedReader in= new BufferedReader(new FileReader("foo.in"));

       public static void main(String args[]){
         FileReader fr = null;
        BufferedReader br = null;
        try{
              fr = newFileReader("e:/notpad/34/users.txt");
              br = new BufferedReader(fr);
              String line = null;
             //讀取大文件時
              while(true){
                   line = br.readLine();
                   if(line == null){
                         break;
                   }
                   System.out.println(line);
              }
        }
    

設(shè)計模式之裝飾著模式
接口工人worker下有兩個子類水管工plumber,與木匠工carpenter。均實現(xiàn)接口下的doSth()方法。A公司Aworker實現(xiàn)接口worker,Agongs 員工(水管&木匠)說“你好,A公司員工”。。。
//將水管工的對象作為參數(shù)傳入Aworker()這個構(gòu)造函數(shù)中,
//則現(xiàn)在A公司現(xiàn)在worker這個成員變量為水管工。

 class Aworkerimplements worker{
  private worker worker;
  Aworker(worker worker){
       this.worker = worker;
  }
  public void doSth(){
       System.out.println("你好,A公司員工");
       worker.doSth();
  }
}

在test類中:

public static void main(String args[]){
       plumber p = new plumber();
       //p向上轉(zhuǎn)型為worker類型的參數(shù),傳入Aworker中。Aworker為裝飾著
       Aworker A = new Aworker(p);
       A.doSth();
  }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 IONo18 1.1IO框架 【 IO:Input Output 在程序運行的過程中,可能需要對一些設(shè)備進...
    征程_Journey閱讀 1,033評論 0 1
  • 1 IO(二)No19 【 緩沖流:內(nèi)置了緩沖區(qū),對現(xiàn)有的流對象進行了封裝,實現(xiàn)了高效的讀寫操作并增強了功能 ...
    征程_Journey閱讀 807評論 0 1
  • 字節(jié)流類 InputStream與OutputStream 兩者分別是字節(jié)輸入流和字節(jié)輸出流的基類。 InputS...
    張?zhí)靸?/span>閱讀 328評論 0 0
  • 1 IO(三)No20 1.1Properties 屬性集 【 Properties屬性集,主要用于操作配置屬...
    征程_Journey閱讀 964評論 0 1
  • 本文轉(zhuǎn)自我的博客,您可以閱讀原文. File類 概覽 創(chuàng)建一個代表一個文件或者文件夾對象,也就是你要操作的目標(biāo)。 ...
    xuan241閱讀 401評論 0 0

友情鏈接更多精彩內(nèi)容