java.io 套件幾乎涵蓋所有輸入輸出操作所需類別。流代表資料序列:輸入流從來源讀取資料,輸出流向目標寫入資料。Java IO 支援基本型別、物件、本地化字元集等多種格式,廣泛應用於檔案傳輸與網路程式設計。
將 System.in 包裝為 BufferedReader:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
read():讀取單一字元,返回 int 值(-1 表結束)。readLine():讀取一整行字串。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 並換行

從檔案讀取位元組資料。常用建構子:
InputStream is = new FileInputStream("C:/java/hello");
InputStream is = new FileInputStream(new File("C:/java/hello"));
核心方法:read()、read(byte[])、available()、close()。
建立檔案並寫入位元組(檔案不存在會自動建立)。
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();
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() ? " 是目錄" : " 是檔案"));
}
}
掌握 Java IO 體系,靈活選擇位元組流或字元流、是否需要緩衝、編碼設定,是高效處理檔案與網路資料的關鍵。