Java 流-列印流&資料流
PrintStream
1.System.out 和 System.err 都是PrintStream的執行個體
2.PrintStream的方法都不用抛出IOException異常
3.列印流無需類型轉換,自動轉成String類型,但緩沖流需要類型轉換(使用緩沖流隻能寫入字元串)
4.使用列印流時會自動轉成String類型,會失去資料原有的類型
import java.io.*;
import java.util.Date;
public class TestPrint {
public static void main(String[] args) throws IOException {
//1.PrintStream ps = System.out; //或.err
//2.PrintStream ps = new PrintStream(new FileOutputStream("D:\\print.txt"));//寫入檔案
PrintWriter ps = new PrintWriter(new FileOutputStream("D:\\print.txt"));//需要手動刷下緩存
ps.println("Love you 3000 times");
ps.println(true);
ps.println(9999);
ps.println(new Date(1000));
ps.close();
ps.flush();
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\a.txt"));
bw.write("Hello");
bw.write(99.5); //不準換會報錯
bw.write(new Date());
}
}
資料流
1.提供了可以存取的所有Java基本資料類型
2.處理流,隻針對位元組流,二進制檔案
3.輸入流鍊和輸出流鍊
4.關閉時之關閉上層流
import java.io.*;
public class TestData {
public static void main(String[] args) throws IOException {
write();
read();
}
public static void read() throws IOException {
//(1)資料源
FileInputStream fis = new FileInputStream("D:\\a.txt");
//(2)提高讀寫效率
BufferedInputStream bis = new BufferedInputStream(fis);
//(3)資料流
DataInputStream dis = new DataInputStream(bis);
//前三步可合成一句
// DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("D:\\a.txt")));
//(4)讀資料
System.out.println(dis.readInt());
System.out.println(dis.readDouble());
System.out.println(dis.readBoolean());
System.out.println(dis.readChar());
System.out.println(dis.readUTF());
dis.close();
}
public static void write() throws IOException {
//(1)目的地
FileOutputStream fos = new FileOutputStream("D:\\a.txt");
//(2)緩沖流提高效率
BufferedOutputStream bos = new BufferedOutputStream(fos);
//(3)資料流,增加對Java基本資料類型和String的處理
DataOutputStream dos = new DataOutputStream(bos);
//(4)寫入資料 //寫入的字元是它原來的模樣
dos.writeInt(98);
dos.writeDouble(99.5);
dos.writeBoolean(true);
dos.writeChar('a');
dos.writeUTF("Love");
//(5)關閉
if(dos!=null)
dos.close();
}
}