Java IO(輸入/輸出)

Java中輸入/輸出的類存放在java.io包中

輸入流類都是抽象類InputStream(字節輸入流)或抽象類Reader(字符輸入流)的子類;
輸出流類都是抽象類OutputStream(字節輸出流)或抽象類 Writer(字符輸出流)的子類。

1.輸入流

1.1 InputStream(字節輸入流)

常用方法:read()、close()等;該類中錯誤引發IOException異常。

close():關閉此輸入流并釋放與該流關聯的所有系統資源

1.2 Writer(字符輸出流)

處理字符文件

2. 輸出流

2.1 OutputStream(字節輸出流)

常用方法:write(),flush(),close()等;返回值為void,錯誤引發IOException異常。

flush():徹底完成輸出并清空緩存區
close():關閉輸出流

2.2 Reader(字符輸入流)

處理字符文件

3. File類

java.io包中唯一代表磁盤文件本身的對象

調用File類中的方法,實現創建、刪除、重命名文件等操作;
File類對象用來獲取文件本身的信息,如:目錄、長度、讀寫權限等

3.1 文件創建與刪除
//方法1:new File(String pathname)
File file=new File("C:/Users/simou/Desktop/1.txt"); 
//方法2:new File(String parent,String child)
File file=new File("C:/Users/simou/Desktop","1.txt");
//方法3:new File(File f,String child)
File file=new File("C:/Users/simou/Desktop/","1.txt");
或
File f=new File("C:/Users/simou/Desktop/");
File file=new File(f,"1.txt");
3.2 獲取文件信息

常用方法:getName(),canRead(),canWrite(),exits()/isFile(),length(),
getAbsolutePath()-獲取絕對路徑,
getParent()-獲取父路徑,
isDirectory()-文件時一個目錄,
isHidden()-隱藏文件,
lastModified()-最后修改時間

4. 文件輸入/輸出流

4.1 FileInputStream類、FileOutputStream類 字節流

InputStream類->FileInputStream類;
OutputStream類->FileOutputStream.

常用構造方法:

File file=new File(name);
FileOutputStream out=new FileOutputStream(file);
或
String name="C:/Users/simou/Desktop/1.txt";
FileOutputStream out=new FileOutputStream(name);
package io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class filewrite {
    public static void main(String[] args) {
        String name="C:/Users/simou/Desktop/1.txt";
        File file=new File(name);
        try{
            FileOutputStream out=new FileOutputStream(file);
            byte[] bt="helloworlder".getBytes();
            out.write(bt);
            out.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
        try{
            FileInputStream in=new FileInputStream(file);
            byte[] te=new byte[1024];
            int len=in.read(te);
            System.out.println(new String(te,0,len));
            System.out.println(file.length());
            in.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}
4.2 FileReader類、FileWriter類 字符流

Reader->InputStreamReader->FileReader
Writer->OutputStreamWriter->FileWriter

優勢:只要不關閉流,每次調用read()方法就順序讀取源中其余的內容,知道源末尾或流被關閉.
用法:同FileInputStream類

5. 帶緩存的輸入/輸出流

5.1 BufferedInputStream類、BufferedOutputStream類

InputStream類-FilterInputStream類>BufferedInputStream類
OutputStream類-FilterOutputStream類>BufferedOutputStream類

常用構造方法:

BufferedInputStream(InputStream in); //帶有32字節的緩存流
或
BufferedInputStream(InputStream in,int size); //自定義緩存區的緩存流

優勢:帶緩存的輸入/輸出流使用方法flush()來將緩存區的數據強制輸出完

讀取文件過程
file->InputStream ->BufferedInputStream->目的地

5.2 BufferedReader類、BufferedWriter類

Reader->BufferedReader
Writer->BufferedWriter

常用方法:read(),readLine(),write(),flush();newLine()-寫入一個行分隔符;
在使用BufferedWriter類的write()方法時,數據并沒有立刻被寫入至輸出流,而是首先進入緩存區中;若要想立刻將緩存區的數據寫入輸出流,一定要調用flush()方法。

讀取文件過程
字符數據->BufferedWriter->OutputStreamWriter->OutputStream ->file

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一.java.io.File類 java.io.File類用于表示文件/目錄 File只用于表示文件的信息(名稱,...
    liangxifeng833閱讀 781評論 0 1
  • 輸入輸出流。 InputStream與OutputStream 讀與寫 使用InputStream讀取字節并轉為字...
    BlackNeko閱讀 978評論 0 0
  • 1.流的分類 (1)輸入輸出流輸入輸出是針對程序運行的內存而言的輸入流的基類:InputStream,Reader...
    ql2012jz閱讀 590評論 0 3
  • 寫作這件事于自己是很高大上的,似乎那是一座高山,需要卯足了勁,鼓足了氣才敢有個開始。 一直不敢寫東西,肚子里沒有太...
    朵熠閱讀 278評論 0 0
  • 清揚:林子牧,我要結婚了。 林子牧:恭喜 清揚:謝謝 青春就是用來追憶的,卻真的回不去。 回憶就是回憶,沒法回到過...
    桀玉閱讀 342評論 0 0