天天看點

JAVA中的流學習

IO的概念:

主要是指使用JAVA進行輸入輸出操作,JAVA所有IO機制都是基于流進行輸入輸出的,這些資料代表了字元或位元組資料的流動系列

資料流:

資料流是一串連續不斷的資料集合,類似于管道的感覺。采用資料流的目的就是使得輸出輸入獨立于裝置。

輸入流:程式從輸入流讀取外界資料

輸出流:程式向輸出流寫入資料,輸出到外界

資料流分類:

流序列中的資料既可以是未加工的原始二進制資料,也可以是經一定編碼處理後符合某種格式規定的特定資料。

1>位元組流:資料流中最小的資料機關是位元組

2>字元流:資料流中最小的資料機關是字元,JAVA中的字元是Unicode編碼,一個字元占兩個位元組

标準IO:

java.lang.System   
public final class System  extends Object{   
   static  PrintStream  err;//标準錯誤流(輸出)  
   static  InputStream  in;//标準輸入(鍵盤輸入流)  
   static  PrintStream  out;//标準輸出流(顯示器輸出流)  
}  
           

java.IO層次體系:

5個類:(File、OutputStream、InputStream、Writer、Reader)

一個接口:Serializable

1. File(檔案特征與管理):用于檔案或者目錄的描述資訊,例如生成新目錄,修改檔案名,删除檔案,判斷檔案所在路徑等。

2.InputStream(二進制格式操作):抽象類,基于位元組的輸入操作,是所有輸入流的父類。定義了所有輸入流都具有的共同特征。

3.OutputStream(二進制格式操作):抽象類。基于位元組的輸出操作。是所有輸出流的父類。定義了所有輸出流都具有的共同特征。

4.Reader(檔案格式操作):抽象類,基于字元的輸入操作

5.Writer(檔案格式操作):抽象類,基于字元的輸出操作

6.RandomAccessFile(随機檔案操作):它的功能豐富,可以從檔案的任意位置進行讀取(輸入輸出)操作

JAVA中的流學習

非流式檔案類(File類):

主要用于命名檔案,查詢檔案屬性和處理檔案目錄

import java.io.File;  
import java.io.IOException;  
public class TestFile {  
    public static void main(String args[]) throws IOException {  
        File dir = new File("\\root");  
        File f1 = new File(dir, "fileOne.txt");  
        File f2 = new File(dir, "fileTwo.java");  
        // 檔案對象建立後,指定的檔案或目錄不一定實體上存在  
        if (!dir.exists())  
            dir.mkdir();  
        if (!f1.exists())  
            f1.createNewFile();  
        if (!f2.exists())  
            f2.createNewFile();  
        System.out.println("f1's AbsolutePath=  " + f1.getAbsolutePath());  
        System.out.println("f1 Canread=" + f1.canRead());  
        System.out.println("f1's len= " + f1.length());  
        String[] FL;  
        int count = 0;  
        FL = dir.list();  
        for (int i = 0; i < FL.length; i++) {  
            count++;  
            System.out.println(FL[i] + "is in \\root");  
        }  
        System.out.println("there are" + count + "file in //root");  
    }  
  
}  
           

JAVA流派生關系:

JAVA中的流學習

緩沖輸入輸出流BufferedInputStream/BufferedOutputStream:

計算機通路外部裝置非常耗時,為了減少通路外存對計算機的消耗,是以除了程式和流節點間交換資料必須的讀寫極之外,還應該增加緩沖機制。緩沖流就是每一個資料流配置設定一個緩沖區,一個緩沖區就是一個臨時存儲資料的記憶體,這樣可以減少通路硬碟的次數,提高傳輸效率。

BufferedInputStream:資料先寫到緩沖區,待緩沖區寫滿後一次性将資料發送給輸出裝置

将檔案讀入記憶體:
           
FileInputStream in=new  FileInputStream( “file1.txt ” );

  BufferedInputStream bin=new  BufferedInputStream( in); 
           

BufferedOutputStream:系統從緩沖區讀取資料,待緩沖區為空時,系統才從輸入裝置讀取資料到緩沖區

将記憶體寫入檔案:
           
FileOutputStreamout=new FileOutputStream(“file1.txt”);

BufferedOutputStream  bin=new BufferedInputStream(out);
           
将鍵盤輸入流讀到記憶體:
           
InputStreamReader sin=new InputStreamReader (System.in) ;
BufferedReader bin=new             BufferedReader(sin);