Java的IO可分為以下幾類。處理byte的類別有:
- InputStream, 可作為input使用, 主要的子類別有:
- ByteArrayInputStream, 讀入來源為byte array
- FileInputStream, 讀入來源為File
- ObjectInputStream, 將其他InputStream加工後, 可用來讀入Object
- DataInputStream, 將其他InputStream加工後, 可用來讀入int, float, double, boolean, bye, char等基本資料型態
- OutputStream, 可作為input使用, 主要的子類別有:
- ByteArrayOutputStream, 輸出到byte array
- FileOutputStream, 輸出到File
- ObjectOutputStream, 將其他OutputStream加工後, 可用來輸出Object
- DataOutputStream, 將其他OutputStream加工後, 可用來寫出int, float, double, boolean, bye, char等基本資料型態
- PrintStream, 可將各種基本資料型態和字串以文字形式輸出, System.out就是一個PrintStream
處理char的類別有:
- Reader, 作為char輸入, 具有將輸入編碼轉為Unicode編碼的能力, 主要的子類別有:
- Writer, 作為char輸出, 具有將Unicode編碼轉為輸出編的能力, 主要的子類別有:
處理檔案的類別有:
- File, 具有新增刪除檔案, 查詢檔案長度, 查詢檔案屬性, 查詢路徑等功能
範例
/**
* Programming Methodology Homework #2 Example.
* Author: Shiuh-Sheng Yu
* Date: 3/16/1998
* Last updated date: 3/17/1998
*/
import java.io.*;
import java.util.*;
public class H2 {
private static String nextToken(BufferedReader din) throws IOException {
StringBuffer sb = new StringBuffer();
int c;
try {
do {
c = din.read();
} while (c==' ' || c=='\n' || c=='\r' || c=='\t');
while (c!=-1 && c!=' ' && c!='\n' && c!='\t' && c!='\r') {
sb.append((char)c);
c = din.read();
}
} catch (EOFException e) {
}
if (sb.length()==0) {
return "";
}
return sb.toString();
}
private static Matrix readMatrix(BufferedReader din) throws MalMatrixException, IOException {
String token = nextToken(din);
int x, y;
double[][] data;
if (!token.equals("matrix")) {
throw new MalMatrixException();
}
token = nextToken(din);
try {
x = Integer.parseInt(token);
} catch (NumberFormatException eNum) {
throw new MalMatrixException();
}
token = nextToken(din);
try {
y = Integer.parseInt(token);
} catch (NumberFormatException eNum) {
throw new MalMatrixException();
}
data = new double[x][y];
for (int i=0; i