首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java IO 流與檔案操作完全指南:從位元組流到字元流

     編輯:Java 程式設計入門

Java IO 流與檔案操作完全指南:從位元組流到字元流

java.io 套件幾乎涵蓋所有輸入輸出操作所需類別。流代表資料序列:輸入流從來源讀取資料,輸出流向目標寫入資料。Java IO 支援基本型別、物件、本地化字元集等多種格式,廣泛應用於檔案傳輸與網路程式設計。


控制台輸入輸出基礎

讀取控制台輸入(字元流)

將 System.in 包裝為 BufferedReader:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  • read():讀取單一字元,返回 int 值(-1 表結束)。
  • readLine():讀取一整行字串。

範例:讀取字元直到 'q'

public class BRRead {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char c;
        System.out.println("輸入字元, 按下 'q' 鍵退出。");
        do {
            c = (char) br.read();
            System.out.println(c);
        } while (c != 'q');
    }
}

控制台輸出

標準輸出使用 System.out.print() / println()(底層為 PrintStream)。也可用 write(int byteval) 輸出單一位元組(低 8 位)。

System.out.write('A'); System.out.write('\n'); // 輸出 A 並換行

檔案輸入輸出核心類別

IO 流繼承體系圖

FileInputStream:位元組輸入流

從檔案讀取位元組資料。常用建構子:

InputStream is = new FileInputStream("C:/java/hello");
InputStream is = new FileInputStream(new File("C:/java/hello"));

核心方法:read()、read(byte[])、available()、close()。

FileOutputStream:位元組輸出流

建立檔案並寫入位元組(檔案不存在會自動建立)。

OutputStream os = new FileOutputStream("C:/java/hello");
OutputStream os = new FileOutputStream(new File("C:/java/hello"));

核心方法:write(int)、write(byte[])、close()。

範例:位元組流複製檔案(可能產生亂碼)

byte[] bWrite = {11, 21, 3, 40, 5};
OutputStream os = new FileOutputStream("test.txt");
for (int x = 0; x < bWrite.length; x++) os.write(bWrite[x]);
os.close();

InputStream is = new FileInputStream("test.txt");
int size = is.available();
for (int i = 0; i < size; i++) System.out.print((char)is.read() + " ");
is.close();

解決中文亂碼:字元流包裝

使用 OutputStreamWriter / InputStreamReader 指定編碼(如 UTF-8):

// 寫入
File f = new File("a.txt");
FileOutputStream fop = new FileOutputStream(f);
OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
writer.append("中文輸入").append("\r\n").append("English");
writer.close(); fop.close();

// 讀取
FileInputStream fip = new FileInputStream(f);
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
StringBuffer sb = new StringBuffer();
while (reader.ready()) sb.append((char) reader.read());
System.out.println(sb.toString());
reader.close(); fip.close();

檔案與目錄操作

File 類別常用操作

  • mkdir():建立單層目錄,失敗回傳 false。
  • mkdirs():建立多層目錄(含父目錄)。
  • isDirectory():判斷是否為目錄。
  • list():列出目錄下檔案/子目錄名稱陣列。

範例:建立多層目錄

File d = new File("/tmp/user/java/bin");
d.mkdirs(); // 自動建立父目錄

範例:列出目錄內容

File f1 = new File("/tmp");
if (f1.isDirectory()) {
    String[] s = f1.list();
    for (String name : s) {
        File f = new File("/tmp/" + name);
        System.out.println(name + (f.isDirectory() ? " 是目錄" : " 是檔案"));
    }
}

其他重要 IO 類別

  • FileReader / FileWriter: 字元流直接操作文字檔,內建字元編碼轉換,適合文字處理。
  • BufferedReader / BufferedWriter: 緩衝流,大幅提升讀寫效率。
  • DataInputStream / DataOutputStream: 處理基本型別資料(int、double 等)的二進制讀寫。
  • ObjectInputStream / ObjectOutputStream: 物件序列化與反序列化。

掌握 Java IO 體系,靈活選擇位元組流或字元流、是否需要緩衝、編碼設定,是高效處理檔案與網路資料的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved