java.io I/O輸出入:
通過數據流,序列化和文件系統提供系統輸入和輸出。
java 提供的串流類別有分為:
1.以字元(char)為單位的-字元串流(Character Streams)。
無Buffer緩衝
Reade (及其子類) Writer (及其子類)
有Buffer緩衝
BufferedReader (配合Reader 及其子類使用) BufferedWriter (配合Reader 及其子類使用)
public abstract class Reader 定義的方法如下: 範例: public static void main(String[] args) throws Exception { String name = "r:/test.txt"; File file = new File(name); if( file.exists()) { BufferedReader input = new BufferedReader(new FileReader(file)); String str; while((str = input.readLine())!= null) { System.out.println(str); } input.close(); } else { System.out.println("檔案:" + name + "不存在!"); } } public abstract class Writer 定義的方法如下:範例: public static void main(String[] args) throws Exception { String file = "r:/test.txt"; String str1 = "測試寫入檔案"; String str2 = "This is a book.\n"; // BufferedWriter output = new BufferedWriter(new FileWriter(file)); FileWriter output = new FileWriter(file); System.out.println("正在寫入檔案..." + file); output.write(str1); //output.newLine(); //寫入新列(換列) output.write(str2); output.close(); }
2.以位元組(byte)為單位的-位元組串流(Byte Streams)。
1.位元組串流僅支援 ISO-Latin-1 8-bit之byte格式,一般用來讀入和寫出二進位資料。 2.常使用在影像,聲音,執行檔,壓縮檔...等等的非純文字文檔的讀寫。(以下可以到API地圖查看:InputStream OutputStream )
無Buffer緩衝
InputStream (及其子類) OutputStream(及其子類)
有Buffer緩衝
BufferedInputStream(配合InputStream 及其子類使用) BufferedOutputStream(配合OutputStream及其子類使用)
public abstract class InputStream 定義的方法如下: 範例: static void print(String s) { System.out.println(s); } public static void main(String[] args) throws Exception { int size; FileInputStream file = new FileInputStream("r:/test.java"); print("總位元組數:" + (size = file.available()));//顯示位元組總數 print("讀取 " + size + " 位元組...."); //顯示讀取的位元組數 byte[] data = new byte[size]; //宣告記憶體緩衝器 if(file.read(data) != size) //若讀取資料 != size { print("不能讀取 " + size + " 位元組"); //顯示讀取不足訊息 } print(new String(data, 0, size)); //顯示讀取資料 file.close(); } public abstract class OutputStream 定義的方法如下: 範例: public static void main(String[] args) throws IOException { String str = "You will never win, if you never begin.\r\n"; byte[] data = str.getBytes(); FileOutputStream file1 = new FileOutputStream("r:/test.txt"); for(int i=0; i<data.length; i++) { file1.write(data[i]); } FileOutputStream file2 = new FileOutputStream("r:/test.txt", true); file2.write(data); FileOutputStream file3 = new FileOutputStream("r:/test.txt", true); file3.write(data, 0, 18); System.out.println("已寫入檔案 - test.txt"); file1.close(); file2.close(); file3.close(); }