Java基礎篇-File IO程式設計
如果自學時候 對於IO可能會有恐懼感
如果要學好IO 必須清楚抽象類? 為什麼
IO的操作部分,重點掌握兩個程式碼模型
IO核心組成:
五個類:
File
OutputStream
InputStream
Writer
Reader
File類詳解
在java.io當中
File類是唯一一個與檔案本身(檔案的建立,刪除,取得檔案資訊)有關的程式類
File類的基本使用:
java.io.File是一個普通的類,直接產生例項化物件即可
兩個常用的構造方法
public File(String pathname)
public File(File parent, String child)
常用方法:
建立新檔案: public boolean createNewFile() throws IOException
只是建立檔案本身,對於檔案內容不做處理
刪除檔案: public boolean delete()
判斷檔案是否存在: public boolean exists()
對於路徑分隔符 Windows 是 \
UNIX 是 /
定義一個常量
public static final String separator
JVM來決定最終的separator是什麼內容
同名檔案的刪除可能會存在一定的延遲
File file = new File("d:\\helllo.txt"); File file = new File("d:" + File.separator + "hello.txt"); file.createNewFile() //只是建立檔案
File類
如果要處理檔案內容,需要通過檔案流來進行操作
java.io包當中存在兩種流: 位元組流 與 字元流
位元組操作流
- InputStream: 位元組輸入流
- OutputStream: 位元組輸出流
字元流:
- 輸入流: Reader
- 輸出流: Writer
位元組流是原生的操作
網路資料傳輸,磁碟資料儲存的支援的資料型別只有位元組 沒有, 而磁碟中的資料必須讀取到記憶體之後才可以操作,記憶體可以將位元組轉換為字元
基本操作流程固定:
- 根據檔案路徑建立File類物件
- 根據位元組流或字元流的子類例項化父類物件
- 進行資料的讀取、寫入操作
- 關閉流
close()
方法
對於IO操作屬於自願處理,所有資源處理操作必須進行關閉,如果專案內沒有執行關閉,可能只能整個專案全部重啟才能關閉
java.io.OutputStream
一定要看
類的定義結構
public abstract class OutputStream extends Object implements Closeable, Flushable
兩個介面
Closeable
: public void close() throws IOException
Flushable
: public void flush() throws IOException
而在OutputStream類裡還定義其它方法
一個介面(Serializable)
BufferedReader類
類定義結構
public class BufferedReader extends Reader
public String readLine() throws IOException
public BufferedReader(Reader in)
預設的換行模式是BufferedReader最大確定 根據回車進行換行
接收型別為String, 可以進行正則處理同時可以轉換為各種的資料模式
public class Demo {
public static void main(String[] args) throws Exception {
BufferReader buf = new BufferReader(new InputStream)
System.out.println()
System.out.println()
已經被Scanner
所替代
列印流解決OutputStream缺陷
java.util.Scanner 可以解決BufferedReader類缺陷
Scanner 是一個專門進行資料流處理的程式類
java.util.Scanner
類的定義
public
判斷是否有指定型別的資料: public boolean hasNextXXX();
取得只能型別的資料 public boolean nextXXX();
hasNext()
String next()
public class Demo {
Scanner scan = new Scanner(System.in);
System.out.print();
if (scan.hasNextInt()) {
int
系統輸出: out err
除錯過程 log 日誌的模式輸出