1. 程式人生 > >201711671235學習《java程式設計》第十週學習總結

201711671235學習《java程式設計》第十週學習總結

教材學習內容總結

1.輸入、輸出流

輸入流 輸出流
OutPutStream類或Writer類的子類
read()讀入源中資料 write()把資料寫入目的地

2.File類

File類物件主要用於獲取檔案本身的資訊

其中directoryPath是目錄名,filename是檔名

構造方法
File(String filename)
File(String directoryPath,String filename)
File(File dir,String filename)

2.1檔案屬性

public String getName() 獲取檔名
public boolean canRead() 判斷檔案是否可讀
public boolean canWrite() 判斷檔案是否可被寫入
public boolean exists() 判斷檔案是否存在
public long length() 獲取檔案的長度(單位是位元組)
public String getAbsolutePath() 獲取檔案的絕對路徑
public String getParent() 獲取檔案的父目錄
public boolean isFlie() 判斷一個檔案是否是一個普通檔案,而不是目錄
public boolean isDirectory() 判斷檔案是否是一個目錄
public boolean isHidden() 判斷檔案是否是隱藏檔案
public long lastModified() 獲取檔案最後修改的時間

2.2目錄

建立目錄

File物件呼叫
public boolean mkdir() 建立成功返回true,反之亦然(目錄已存在返回false)

 

列出目錄檔案

public String[] list() 字串形式返回目錄下的全部檔案

public File[] listFiles()

用File物件形式返回目錄下的全部檔案

 

列出指定型別的檔案

public String[] list(FilenameFilter obj) 字串形式返回目錄下指定型別的全部檔案
public File[] listFiles(FilenameFilter obj) 用File物件形式返回目錄下指定型別的全部檔案

FilenameFilter 是一個介面,介面中的方法:

public boolean accept(File dir,String name)

2.3檔案的建立與刪除

檔案物件   File file=new File(“c:\\myletter”,”letter.txt“)

public boolean createNewFile()

新建檔案

沒有letter.txt檔案,file.createNewFile()新建

public boolean delete()

刪除當前檔案 file.delete()

2.4執行可執行檔案

要執行一個本地機器上的可執行檔案,使用java.lang包中的Runtime類

宣告+建立物件:Runtime ec=Runtime.getRuntime();

ce.exec(String command)開啟本地機器上的可執行檔案或執行一個操作。

3.檔案位元組輸入/出流

使用流四個步驟

輸入流 輸出流
設定源 給出目的地
建立輸入流 建立輸出流
讀取資料 把資料寫入目的地
關閉 關閉

構造方法

FileInputStream(String name) 檔名建立FileInputStream流 引數file和name指定輸入流的源
FileInputStream(File file) File物件建立....
zaitry-catch語句中的1try語句執行,IOException(IO異常)

 

FileOutputStream(String name,【boolean append】) 檔名建立FileOutputStream流

append為true時不能重新整理檔案,在檔案末尾開始寫入資料;

引數file和name指定輸出流的目的地

FileOutputStream(File file,【boolean append】) File物件建立....
zaitry-catch語句中的1try語句執行,IOException(IO異常)

讀取位元組

int read() 從源中讀取單個位元組的資料
int read(byte b[]) 讀取b.length個位元組放到b[]中
int read(byte b[],int off,int len) 指定從位元組陣列的某個位置開始存放讀取的資料

寫位元組

void write(int n) 向目的地寫入單個位元組的資料
void write(byte b[]) 向目的地寫入一個位元組陣列
void write(byte b[],int off,int len) 起始位置為off處取len個位元組寫到目的地

關閉流

in.close()

4.檔案輸入輸出流

構造方法

FileReader(String filename||File filename) 輸入流
FileWriter(String filename||File filename) 輸出流
FileReader(String filename,boolean append)  
FileWriter(String filename,boolean append)  

4.1Reader類提供的read方法以字元為單位順序地讀取源中的資料。

   int read();  int read(char b[]);
 int read(char b[], int off, int len);  void close();
 long skip(long numBytes);  

4.2Writer流以字元為單位順序地寫檔案,每次呼叫write方法就順序地向目的地寫入內容。

Writer類有如下常用的方法:

void write(int n) 向輸出流寫入一個字元
void write(byte b[]) 向輸出流寫入一個字元陣列
void write(byte b[],int off,int length) 從給定字元陣列中起始於偏移量off處取len個字元寫到輸出流
 void close() 關閉輸出流
輸出流.flush() 沖洗當前緩衝區,即把緩衝區的內容吸入到目的地

5.緩衝流

BufferedReader和BufferedWriter類建立的物件稱作緩衝輸入、輸出流;二者的源和目的地必須是字元輸入流和字元輸出流。  

5.1構造方法:

BufferedReader(Reader in); 讀取文字行
BufferedWriter (Writer out) 將資料寫到目的地

5.2BufferedReader和BufferedWriter類讀寫檔案的方法:

readLine() 讀取文字行
write(String s,int off,int len) 把字串s寫到檔案中
newLine() 向檔案寫入一個回行符

6 .隨機流

使用RandomAccessFile類來建立一個隨機訪問檔案流;RandomAccessFile類建立的流的指向既可以作為源也可以作為目的地。   

6.1構造方法:

RandomAccessFile(String name,String mode) 引數name確定檔名 引數mode取r(只讀)或rw(可讀寫),決定建立的流對檔案的訪問許可權
RandomAccessFile(File file,String mode) 引數file給出建立的流的源(流目的地)

6.2相關方法:

seek(long a) 定位RandomAccessFile流的讀寫位置
getFilePointer() 獲取流的當前讀寫位置  

 

7 .陣列流

7.1位元組陣列流

位元組陣列輸入流ByteArrayInputStream和位元組陣列輸出流ByteArrayOutputStream分別使用位元組陣列作為流的源和目標。

ByteArrayInputStream構造方法及常用方法:

 ByteArrayInputStream(byte[] buf) 位元組陣列流的源是引數buf指定的陣列的全部位元組單元
 ByteArrayInputStream(byte[] buf,int offset,int length) 位元組陣列流的源是引數buf指定的陣列從offset處按順序取得length個位元組單元
public int read() 順序地從源中讀出一個位元組
public int read(byte[] b,int off,int len) 順序地從源中讀出引數len指定的位元組數

7.2ByteArrayOutputStream流構造方法及常用方法

ByteArrayOutputStream() 位元組陣列輸出流指向一個預設大小為32位元組的緩衝區
ByteArrayOutputStream(int size) 位元組陣列輸出流指向緩衝區的初始大小由引數size指定
public void write(int b) 順序地向緩衝區寫入一個位元組
public void write(byte[] b,int off,int len) 將引數b中指定的len個位元組順序地寫入緩衝區
public byte[] toByteArray() 返回輸出流寫入到緩衝區的全部位元組

7.3字元陣列

 CharArrayReader和CharArrayWriter類是字元陣列流,使用字元陣列作為流的源和目標。

 8.資料流

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

構造方法:

DataInputStream(InputStream in) 建立的資料輸入流指向一個由引數in指定的底層輸入流
DataOutputStream(OutnputStream out) 建立的資料輸出流指向一個由引數out指定的底層輸出流

9. 物件流

ObjectInputStream和ObjectOutputStream類建立的物件稱為物件輸入流和物件輸出流。

構造方法:

*  ObjectInputStream(InputStream in)

*  ObjectOutputStream(OutputStream out)

相關方法:

writeObject(Object obj) 將一個物件obj寫入到一個檔案
readObject() 讀取一個物件到程式中

所謂序列化:一個類如果實現了Serializable介面,那麼這個類建立的物件就是所謂序列化的物件。

10 .序列化與物件克隆

如果一個“複製品”實體的變化不會引起原物件實體發生變化,反之亦然。這樣的複製品稱為原物件的一個克隆物件或簡稱克隆。

一個物件呼叫clone()方法就可以獲取該物件的克隆物件。

物件輸入流通過物件的序列化資訊來得到當前物件的一個克隆。  

11.使用Scanner解析檔案
使用Scanner類和正則表示式來解析檔案。

1.使用預設分隔標記解析檔案//2.使用正則表示式作為分隔標記解析檔案
建立Scanner物件,並指向要解析的檔案//並使用useDelimiter方法指定正則表示式作為分隔標記,例如:
File file = new File(' hello. java") ;

Scanner sc = new Scanner(file) ;

sc將空白作為分隔標記//sc. useDelimi ter (正則表示式) ;
相關方法  next ()依次返回file中的單詞
hasNext ()判斷file最後一一個單詞是否已被next ()方法返回

12.檔案對話方塊

構造方法JFileChooser()建立初始不可見的有模式的檔案對話方塊。

然後檔案對話方塊呼叫下述2個方法:

showSaveDialog(Component a) 使得對話方塊可見;引數a指定對話方塊可見時的位置,當a是null時,檔案對話框出現在螢幕的中央;如果元件a不空,檔案對話方塊在元件a的正前面居中顯示 提供儲存檔案的介面
showOpenDialog(Component a) 提供開啟檔案的介面
   

13.帶進度條的輸入流

如果讀取檔案時希望看見檔案的讀取進度可以使用javax.swing包提供的輸入流類:ProgressMonitorInputStream。

構造方法:

ProgressMonitorInputStream(Conmponent c,String s,InputStream);

14.檔案鎖

FileLock、FileChannel類處理Java提供的檔案鎖功能。它們分別在java.nio和java.nio.channels包中。

輸入、輸出流讀寫檔案時可以使用檔案鎖。  

RondomAccessFile建立的流在讀寫檔案時使用檔案鎖的步驟如下:

14.1先使用RondomAccessFile流建立指向檔案的流物件,該物件的讀寫屬性必須是rw,例如:

RandomAccessFile input=new  RandomAccessFile("Example.java","rw");

14.2input流呼叫方法getChannel()獲得一個連線到地層檔案的FileChannel物件(通道),例如

FileChannel channel=input.getChannel();

14.3通道呼叫tryLock()或lock()方法獲得一個FileLock(檔案鎖)物件,這一過程也稱作對檔案加鎖。

教材學習中的問題和解決過程

輸入輸出流得參照物搞不清楚

學習進度條

  程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 20篇 400小時 會用java語言獨立設計程式
第一週 13/13 1/1  5/5 學會使用jdk以及對java源程式語句的基本注意事項有所瞭解
第二週 140/143  1/2 10/15 學會java基本資料型別與陣列和c語言/c++在表達和用法上的相同/不同之處
第三週 276/419 1/3 20/35 java中運算子,表示式和語句的表現形式,類的宣告,定義方法
第四周 600/1019 1/4 30/45 類和物件
第五週

150/1169

1/5 10/55 繼承的作用,子類和父類的繼承性,子類繼承父類後方法的訪問許可權以及各種操作
第六週 100/1269 1/6 8/63 介面定義、使用方法和作用
第七週 100/1369 1/7 9/72 內部類(獨有)包含匿名類和異常類(檢測)的使用方法和作用
第八週 150/1869 1/8 10/82 java常用實用類和方法
第九周 100/1969 1/9 20/102 元件、容器、視窗、(如何處理事件:事件源,監視器、介面)
第十週 80/2049 1/10 10/112 輸入輸出流和各種流的作用、構造方法

參考文獻

《java2實用教程(第5版)》