天天看點

Java IO流(最精美 最全)

By CaesarChang 合作: [email protected]

~關注我 帶你看更多精品技術和面試必備

File

在這裡面 目錄叫檔案夾

構造方法
Java IO流(最精美 最全)
Java IO流(最精美 最全)

常用方法:

createNewFile 如果不存在才會建立,是建立的檔案

mkdir 是建立的檔案夾

mkdirs 可以建立多層 的檔案夾

boolean exists() 測試此抽象路徑名表示的檔案或目錄是否存在。

File getAbsoluteFile() 傳回此抽象路徑名的絕對路徑名形式。

String getAbsolutePath() 傳回此抽象路徑名的絕對路徑名字元串。

boolean delete() 删除此抽象路徑名表示的檔案或目錄。//注意:這個删除,不走資源回收筒,直接删除

File[] listFiles(FileFilter filter) 傳回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。

boolean isDirectory() 測試此抽象路徑名表示的檔案是否是一個目錄。

boolean isFile() 測試此抽象路徑名表示的檔案是否是一個标準檔案。

static File[] listRoots() 列出可用的檔案系統根。

long length() 傳回由此抽象路徑名表示的檔案的長度。位元組數

String getPath() 将此抽象路徑名轉換為一個路徑名字元串。

String getName() 傳回由此抽象路徑名表示的檔案或目錄的名稱。

String getParent() 傳回此抽象路徑名父目錄的路徑名字元串;如果此路徑名沒有指定父目錄,則傳回 null。

File getParentFile() 傳回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則傳回 null。

File[] listFiles() 傳回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的檔案。//傳回路徑全名 推薦

File[] listFiles(FileFilter filter) 傳回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。

File[] listFiles(FilenameFilter filter) 傳回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。

檔案周遊:

Java IO流(最精美 最全)

檔案過濾器:

public class MyFileter implements FileFilter { public boolean accept(File pathname) { if(pathname.getName().endsWith(".avi")||pathname.isDirectory)){ return true; } retrun false; } }

自定義類, 實作FIleFIleter接口 ,重寫 accept方法

File[] files=file.listFiles(new MyFileter()); 或者 用它建立對象

IO 流

IO流的分類:

按照流的方向來分,可以分為:輸入流和輸出流.

按照流動的資料類型來分,可以分為:(其他的)位元組流和字元流(文字)

位元組流: (一切皆位元組)

- InputStream

-OutputStream

字元流

-Reader

-Writer

OutputStream

可以将資料寫到檔案中。

常用方法:

  1. void write​(int b): 向檔案中寫入一個位元組。
  2. void write​(byte[] b): 向檔案中寫入一個位元組數組。
  3. void write​(byte[] b, int beginindex, int len): 向檔案中寫入位元組輸入的一部分,。
  4. void close​(): 釋放資源.
  5. void flush() 抛出緩存重新整理

最常用的子類

FileOutputSteam

構造函數:

①FileOutputStream(File file)

②FileOutputStream(String name)

③FileOutputStream(File file, boolean append)

④FileOutputStream(String name, boolean append)

string的getBytes()方法是得到一個作業系統預設的編碼格式的位元組數組。

FileInputStream

FileInputStream

(

String

name)

FileInputStream

(

File

file)

Java IO流(最精美 最全)

void close​(): 釋放資源.

沒了 傳回-1

注意

Java IO流(最精美 最全)

肯能會出現讀一半漢字的問題

FileWriter

leWriter(File file)

根據給定的 File 對象構造一個 FileWriter 對象。

FileWriter(File file, boolean append)

根據給定的 File 對象構造一個 FileWriter 對象。

FileWriter(String fileName)

根據給定的檔案名構造一個 FileWriter 對象。

FileWriter(String fileName, boolean append)

根據給定的檔案名以及訓示是否附加寫入資料的 boolean 值來構造 FileWriter 對象。
  1. write(int args):寫入數字,利用 ASCII 碼表 或者 Unicode 表轉化
  2. write(String str):寫入字元串
  3. write(String str,int offset,int count):寫入字元串的一部分
  4. write(char[] array):寫入字元數組
  5. write(char[] array,int offset,int count):寫入字元數組的一部分

FileReader

FileReader(String fileName) FileReader(File file)

public int read() throws IOException

讀取單個字元。 讀取的字元,如果已到達流的末尾,則傳回 -1

public int read(char[] cbuf) throws IOException

讀取一個字元數組 讀取的字元,如果已到達流的末尾,則傳回 -1

轉換流:

位元組流裝飾為字元流 ,使用了裝飾者設計模式

你在網上的資源都是位元組流, 必須轉換為字元流

輸入流的轉換:

InputStreamReader isr=new INputStreamReader( 位元組流 , "編碼格式")

輸出流的轉換:

OutputStreamWriter

Java IO流(最精美 最全)

字元列印流:

輸出

Java IO流(最精美 最全)

也是輸出:

Java IO流(最精美 最全)

也可以用于轉換字元流

PrintWriter pw =new PrintWriter(字元流);

緩存讀取流:

BufferedReader br =new Bufferedreader(字元流);

br.readLine(); //可以一次讀取一行緩存字元讀取流 讀到結尾傳回null

Properties

暫時用 . properties檔案

key=value

Java IO流(最精美 最全)

序列化與反序列化:(以後會淘汰)

序列化:把對象轉換為位元組序列的過程稱為對象的序列化。

反序列化:把位元組序列恢複為對象的過程稱為對象的反序列化。

什麼時候用?

當你想把的記憶體中的對象狀态儲存到一個檔案中或者資料庫中

Java IO流(最精美 最全)
Java IO流(最精美 最全)

上面也可看出來 序列化啥的

一定是 類implements Serializable 接口

在主類裡面一定 用 ObjectOutputStream 或者 ObjectInputStream

try with resources

Java IO流(最精美 最全)

把他放到try()裡面 自動會關閉 ,因為 建立對象的類繼承自closeable接口,而closeable實作了AutoCLoseable接口 ,自動會關閉 執行 .close()