1. 程式人生 > >201711671106《Java程式設計》第十章總結

201711671106《Java程式設計》第十章總結

第十章輸入、輸出流學習內容總結

輸入流:從外部的儲存媒介或程式讀入資料,程式通過輸入流讀取源中的資料。

輸出流:將處理的結果寫入到永久的儲存媒介中或傳送給其他程式,程式通過輸出流傳向目的地。

java.io包提供大量的流類,所有輸入流都是抽象類InputStream(位元組輸入流)或抽象類Reader(字元輸入流)的子類,而所有的輸出流都是抽象類OutputSteam(位元組流)或抽象類Writer(字元輸出流)的子類。

File類:用與獲取檔案資訊 三個構造方法:1.File(String filename)2.File(String directoryPath,String filename)3.File(File dir,String filename),filename-檔名字,directoryPath-檔案的路徑,dir-目錄

檔案屬性:獲取檔案資訊的方法見P282

目錄:

建立目錄:public boolean mkdir(),成功返回true,否則false

列出目錄中的檔案:public String[]list 用字串形式返回目錄下的所有檔案;  public File[]listFiles() 用File物件形式返回目錄下的全部檔案。若要返回指定型別 則要public String[]list(FilenameFilter obj) 用字串形式返回目錄下的指定型別所有檔案或者  public File[]listFiles(FilenameFilter obj) 用File物件形式返回目錄下的指定型別全部檔案。

其中上述方法中FilenameFilter 為一個介面,在list方法執行時引數obj不斷回撥介面方法accpet(File dir,String name)dir是當前目錄的dirFile,name是目錄中的一個檔名,當返回true時候將名字為name的檔案返回陣列中。

檔案的建立與刪除:

當使用File類建立一個檔案物件後,如File file=new File(“C:\\\”,"letter.txt"),若目錄中沒有對應的檔案,則可以呼叫createNewFile()建立檔案,可以delete()刪除當前檔案。

執行可執行檔案:

步驟:①使用java.lang包中的Runtime類,先宣告物件 Runtime ec,然後使用該類的getRuntime()靜態方法建立這個物件 ec=Runtime.getRuntime();,然後ec呼叫exec(String command)開啟檔案

檔案位元組輸入流

四個步驟:①設定輸入流的源②建立指向源的輸入流3.輸入流讀取資料④關閉輸入流

1.用FileInputStream(String name)/FileInputStream(File file)建立輸入流

2.使用輸入流讀取位元組 三個方法 read() read(byte b[]),read(byte b[],int off,int len)

3.關閉流 close()

檔案位元組輸出流

四個步驟:①設定輸出流的源②建立指向目的地的輸出流 3.輸出流寫入資料④關閉輸出流

1.用FileOutputStream(String name)/FileOutputStream(File file)建立輸入流

2.使用輸出流讀取位元組 三個方法 write() write(byte b[]),write(byte b[],int off,int len)

3.關閉流 close()

檔案字元輸入、輸出流

因為位元組流不能很好操作字元,則要用字元流。

FileInputStream、FileOutputStream分別對應FileReader和FileWriter

緩衝流

BUfferedReader和BufferedWriter類建立的物件稱為緩衝輸入、輸出流,增強檔案的讀寫能力。

BufferedReader用readLine()讀取文字行   BUfferedWriter用newLine()寫入方法

以上兩個方法稱為上層流,指向的字元流是底層流,java採用快取技術將上層流與底層流連線。

隨機流 P293常用方法

用RandomAccessFile建立,不是InputStream和OutStream的子類。

構造方法 1.RandomAccessFile(String name,String mode),name確定檔名,mode確定訪問權利

2.RandomAccessFile(File file,String mode)引數是file物件,是源與目的地。

定為RandomAccessFile流的讀寫方法 seek(long a) ;getFilePointer()獲取當前讀寫位置。

陣列流

位元組陣列輸入流ByteArrayInputStream和輸出流ByteArrayOutputStream分別使用位元組陣列作為流的源和目的地,構造方法:

ByteArrayInputStream(byte ()buf),ByteArrayInputStream(byte ()buf,int offset,int,length);

字元陣列流CharArrayReader()和CharArrayWritter類

資料流 DataInputStream和DataOutputSteam類建立的物件稱為資料輸入流與輸出流

構造方法:DataInputStream(InputStream in)建立的資料輸入流指向一個由引數in的底層輸入流

DataOutputStream(OutputStream out)建立的資料輸出流指向一個由引數out指定的底層輸出流   其他方法見P298

物件流 ObjectInputStream和ObjectOutputStream 

分別使用writeobject(object ob)和readobject寫入和讀取物件

構造方法ObjectInputStream(InputStream in)ObjectOutputStream (OutputStream out)

序列化與物件克隆:若一個類和兩個物件如果有相同的引用,則有相同的實體與功能

使用scanner解析檔案

一:使用預設分隔標記解析檔案:File file=new file(“hello,java”);  Scanner sc=new scanner(file)空格作為標記,用next()方法返回file的單詞,若最後一個單詞被返回,則放回ture。

二:使用正則表示式解析檔案:File file=new file(“hello,java”);  Scanner sc=new scanner(file);sc.useDelimiter(正則表示式);