看板 ncyu_phyedu 關於我們 聯絡資訊
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編碼的能力, 主要的子類別有: BufferedReader, 具有緩衝功能, 可讓IO比較有效率 CharArrayReader, 由某個字元陣列作為輸入 InputStreamReader, 作為InputStream轉為Reader的介面 FileReader, 由檔案讀入char Writer, 作為char輸出, 具有將Unicode編碼轉為輸出編的能力, 主要的子類別有: BufferedWriter, 具有緩衝功能, 可讓IO比較有效率 CharArrayWriter, 輸出到某個字元陣列 OutputStreamWriter, 作為Writer轉到OutputStream的介面 FileWriter, 將char輸出到檔案 處理檔案的類別有: 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<x; i++) { for (int j=0; j<y; j++) { try { token = nextToken(din); data[i][j] = Double.valueOf(token).doubleValue(); } catch (NumberFormatException eNum) { throw new MalMatrixException(); } } } return new Matrix(data); } public static void main(String[] args) { BufferedReader din; if (args.length != 1) { System.out.println("Usage: java H2 fname"); System.out.println("where fname is a file contains matrix data."); System.exit(0); } try { String inputbuf; din = new BufferedReader(new FileReader(args[0])); for (;!(inputbuf=nextToken(din)).equals("");) { if (inputbuf.equals("+")) { Matrix a = readMatrix(din); Matrix b = readMatrix(din); a.print(); a.add(b); System.out.println("+"); b.print(); System.out.println("="); a.print(); } else if (inputbuf.equals("*")) { Matrix a = readMatrix(din); Matrix b = readMatrix(din); Matrix c = a.multiply(b); a.print(); System.out.println("*"); b.print(); System.out.println("="); c.print(); } else if (inputbuf.equals("value")) { Matrix a = readMatrix(din); System.out.println("value of "); a.print(); System.out.println("="); System.out.println(a.determinant()); } else { break; } } } catch (Exception e) { e.printStackTrace(); System.exit(1); } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.58.22.74