1、用字節流讀寫二進制文件
要求:用DataOutputStream+FileOutputStream類將1,2,…,100,這100個數字寫入到文件
d:\out1.bin里,然后再用DatalnputStream+FilelnputStream類將d:\out1.bin的內讀出來,并輸出到屏幕上。
用DataOutputStream+FileOutputStream寫入二進制數據時,直接調用DataOutputStream的writelnt()方
法將一個int型數據寫入到文件中。讀入數據時用DatalnputStream+FilelnputStream,調用DatalnputStream的
readlnt()方法讀入一個int型數據。
判斷是否讀入完畢有3種辦法:
a:用while循環,當拋出EOFException時表示數據讀入完畢。
b:先調用File類的length()方法得到輸入流的字節總數,字節總數除以4得到需要讀入的次數,然后用for循
環來讀入。
c:在寫入d:\out1.bin時,先寫入一個整數,表示一共寫入了多少個數,例如先寫入100,讀入時先讀第一
個數字,即100,然后循環100次讀取其余的數字。
import java.io.*;public class BinaryFileReadWrite {public static void main(String[] args) {// 寫入數據到文件try {DataOutputStream dos = new DataOutputStream(new FileOutputStream("d:\\out1.bin"));for (int i = 1; i <= 100; i++) {dos.writeInt(i);}dos.close();System.out.println("寫入數據成功");} catch (IOException e) {System.out.println("寫入數據失敗:" + e.getMessage());}// 從文件讀取數據并輸出到屏幕try {DataInputStream dis = new DataInputStream(new FileInputStream("d:\\out1.bin"));int num;while (true) {try {num = dis.readInt();System.out.print(num + " ");} catch (EOFException e) {break;}}dis.close();} catch (IOException e) {System.out.println("讀取數據失敗:" + e.getMessage());}}
}
2、用字符流讀寫字符文件
要求:用FileWriter類將1,2,…,100,這100個數字寫入到文件d:\out2.txt里,然后再用FileReader類將
d:\out2.txt的內讀出來,并輸出到屏幕上。
注意:將一個數字以字符流的方式寫入文件時,要將該數字先轉化為字符,然后寫入到文件中。從文件中讀
入字符數據時,可以一次讀入一個字符,也可以一次讀多個字符,放到字符數組中。
import java.io.*;public class CharacterFileReadWrite {public static void main(String[] args) {// 寫入數據到文件try (FileWriter fw = new FileWriter("d:\\out2.txt")) {for (int i = 1; i <= 100; i++) {fw.write(Integer.toString(i));fw.write("\n"); // 換行}System.out.println("寫入數據成功");} catch (IOException e) {System.out.println("寫入數據失敗:" + e.getMessage());}// 從文件讀取數據并輸出到屏幕try (FileReader fr = new FileReader("d:\\out2.txt")) {int data;while ((data = fr.read()) != -1) {System.out.print((char) data);}} catch (IOException e) {System.out.println("讀取數據失敗:" + e.getMessage());}}
}
3、用字節流讀寫字符文件
用FileOutputStream將1,2,…,100,這100個數字的每個數字按照字節數組方式寫入到文件d:\out3.txt
里,然后再用FilelnputStream類按照一次讀入一個字節數組的方式將d:\out3.txt的內的數據讀出來,并輸出到
屏幕上。
注意:將一個數字以字節數組的方式寫入文件時,要將該數字先用String.valueOf()方法轉化為字符,然后
用String的getBytes()方法變成一個字節數組,然后用FileOutputStream類將字節數組寫入到文件中。從文件中
讀入字符數據時,可以用FilelnputStream一次讀入一個字節數組,然后把字節數組變成字符串。
import java.io.*;public class ByteFileReadWrite {public static void main(String[] args) {// 寫入數據到文件try (FileOutputStream fos = new FileOutputStream("d:\\out3.txt")) {for (int i = 1; i <= 100; i++) {String numberAsString = String.valueOf(i);byte[] bytes = numberAsString.getBytes();fos.write(bytes);fos.write("\n".getBytes()); // 換行}System.out.println("寫入數據成功");} catch (IOException e) {System.out.println("寫入數據失敗:" + e.getMessage());}// 從文件讀取數據并輸出到屏幕try (FileInputStream fis = new FileInputStream("d:\\out3.txt")) {byte[] buffer = new byte[1024]; // 緩沖區大小int bytesRead;while ((bytesRead = fis.read(buffer)) != -1) {String data = new String(buffer, 0, bytesRead);System.out.print(data);}} catch (IOException e) {System.out.println("讀取數據失敗:" + e.getMessage());}}
}