File類
- java程序中的此類的一個對象筒捺,就對應(yīng)著硬盤中的一個文件或網(wǎng)絡(luò)中的一個資源吁断。
- File file1 = new File("/home");File file2 = new File("d:\io\io1");
- File既可以表示一個文件(.doc .xls .mp3 .avi .jpg .dat)男旗,也可以表示一個文件目錄!
- File類的對象是與平臺無關(guān)的而咆。
- File類針對于文件或文件目錄摇肌,只能進行新建、刪除媒役、重命名祝谚、上層目錄等等的操作。如果涉及到訪問文件的內(nèi)容酣衷,F(xiàn)ile是無能為力的交惯,只能使用IO流下提供的相應(yīng)的輸入輸出流來實現(xiàn)。
- 常把File類的對象作為形參傳遞給相應(yīng)的輸入輸出流的構(gòu)造器中穿仪!
IO 流的結(jié)構(gòu)
IO流的劃分
- 按照流的流向的不同:輸入流 輸出流 (站位于程序的角度)
- 按照流中的數(shù)據(jù)單位的不同:字節(jié)流 字符流 (純文本文件使用字符流 席爽,除此之外使用字節(jié)流)
- 按照流的角色的不同:節(jié)點流 處理流 (流直接作用于文件上是節(jié)點流(4個),除此之外都是處理流)
緩沖流(處理流的一種,可以提升文件操作的效率)
1.從硬盤中讀入一個文件啊片,要求此文件一定得存在只锻。若不存在,報FileNotFoundException的異常
2.從程序中輸出一個文件到硬盤紫谷,此文件可以不存在齐饮。若不存在,就創(chuàng)建一個實現(xiàn)輸出笤昨。若存在祖驱,則將已存在的文件覆蓋
3.真正開發(fā)時,就使用緩沖流來代替節(jié)點流
4.最后要關(guān)閉相應(yīng)的流瞒窒。先關(guān)閉輸出流羹膳,再關(guān)閉輸入流。將此操作放入finally
BufferedReader (readLine()) (int read(char[] c))或String readLine()
注意想著使用flush()
轉(zhuǎn)換流:實現(xiàn)字節(jié)流與字符流之間的轉(zhuǎn)換
InputStreamReader:輸入時根竿,實現(xiàn)字節(jié)流到字符流的轉(zhuǎn)換陵像,提高操作的效率(前提是,數(shù)據(jù)是文本文件) ===>解碼:字節(jié)數(shù)組--->字符串
OutputStreamWriter:輸出時寇壳,實現(xiàn)字符流到字節(jié)流的轉(zhuǎn)換醒颖。 ===>編碼: 字符串---->字節(jié)數(shù)組
標(biāo)準(zhǔn)的輸入輸出流
System.in: 從鍵盤輸入數(shù)據(jù)
System.out:從顯示器輸出數(shù)據(jù)
打印流
(輸出流) PrintStream(處理字節(jié)) PrintWriter(處理字符)
可以使用System.setOut(PrintStream p)重新設(shè)置一下輸出的位置
PrintStream p = new PrintStream(new FileOutputStream("hello.txt"),true);
數(shù)據(jù)流(處理基本數(shù)據(jù)類型、String類壳炎、字節(jié)數(shù)組)
DataInputStream DataOutputStream
dos.writeInt(123456);
dis.readInt();
對象流(用來處理對象的)
對象的序列化機制:允許把內(nèi)存中的Java對象轉(zhuǎn)換成平臺無關(guān)的二進制流泞歉,從而允許把這種二進制流持久地保存在磁盤上逼侦,或通過網(wǎng)絡(luò)將這種二進制流傳輸?shù)搅硪粋€網(wǎng)絡(luò)節(jié)點。當(dāng)其它程序獲取了這種二進制流腰耙,就可以恢復(fù)成原來的Java對象
ObjectInputStream(Object readObject();)
ObjectOutputStream (void writeObject(Object obj))
如何創(chuàng)建流的對象:
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.txt")));
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("person.txt")));
實現(xiàn)序列化機制的對象對應(yīng)的類的要求:
①要求類要實現(xiàn)Serializable接口
②同樣要求類的所有屬性也必須實現(xiàn)Serializable接口
③要求給類提供一個序列版本號:private static final long serialVersionUID;
④屬性聲明為static 或transient的榛丢,不可以實現(xiàn)序列化
隨機存取文件流:RandomAccessFile
1既可以充當(dāng)一個輸入流,又可以充當(dāng)一個輸出流:public RandomAccessFile(File file, String mode)
2支持從文件的開頭讀取挺庞、寫入晰赞。若輸出的文件不存在,直接創(chuàng)建选侨。若存在掖鱼,則是對原有文件內(nèi)容的覆蓋。
3 支持任意位置的“插入”援制。
參考:http://blog.csdn.net/cynhafa/article/details/6882061
http://blog.sina.com.cn/s/blog_6400e5c50101qrhk.html