天天看點

Java IO 處理流之:列印流 和 資料流用法

Java IO 處理之四:列印流 和 資料流用法

    • 1. Java IO 處理流之列印流
    • 2. Java IO 處理流之資料流

1. Java IO 處理流之列印流

  1. 在整個IO包中,列印流是輸出資訊最友善的類。
  2. PrintStream(位元組列印流)和PrintWriter(字元列印流)

    ① 提供了一系列重載的print和println方法,用于多種資料類型的輸出

    ② PrintStream和PrintWriter的輸出不會抛出異常

    ③ PrintStream和PrintWriter有自動flush功能

    ④ System.out傳回的是PrintStream的執行個體

  3. Demo
//列印流:位元組流:PrintStream  字元流:PrintWriter
	@Test
	public void printStreamWriter() {
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(new File("print.txt"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}//建立列印輸出流,設定為自動重新整理模式(寫入換行符或位元組 '\n' 時都會重新整理輸出緩沖區)
		PrintStream ps = new PrintStream(fos,true);
		if (ps != null) {	// 把标準輸出流(控制台輸出)改成檔案
			System.setOut(ps);}
		for (int i = 0; i <= 255; i++) {  //輸出ASCII字元
			System.out.print((char)i);
			if (i % 50 == 0) {   //每50個資料一行
				System.out.println(); // 換行
			}  }
		ps.close();

	}
           

2. Java IO 處理流之資料流

  1. 為了友善地操作Java語言的基本資料類型的資料,可以使用資料流。
  2. 資料流有兩個類:(用于讀取和寫出基本資料類型的資料)

    ① DataInputStream 和 DataOutputStream

    ② 分别“套接”在 InputStream 和 OutputStream 節點流上

  3. DataInputStream中的方法
boolean readBoolean()		
     byte readByte()
     char readChar()			
     float readFloat()
     double readDouble()		
     short readShort()
     long readLong()			
     int readInt()
     String readUTF()                                 
     void readFully(byte[] b)
           
  1. DataOutputStream中的方法

    将上述的方法的read改為相應的write即可。

  2. 資料流實作把資料寫到檔案
  3. 注意:要先寫入到檔案再讀取。
//資料流:用來處理基本資料類型、String、位元組數組的資料:  DataInputStream DataOutputStream
	@Test
	public void testData() {
		DataOutputStream dos = null;
		try {
			FileOutputStream fos = new FileOutputStream("data.txt");
			dos = new DataOutputStream(fos);		
			dos.writeUTF("我愛你,你卻不知道!");
			dos.writeBoolean(true);
			dos.writeLong(1345674561);
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if(dos != null) {
				try {
					dos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
           
  1. 資料流實作從檔案讀取資料到程式
@Test
	public void testData1() {
		DataInputStream dis = null;
		try {
			dis = new DataInputStream(new FileInputStream(new File("data.txt")));
//			byte [] b = new byte[20];這樣讀是錯的,會出現亂碼
//			int len;
//			while((len = dis.read(b)) != -1) {
//				System.out.println(new String(b,0,len));
//			}
			String str = dis.readUTF();
			System.out.println(str);
			boolean b = dis.readBoolean();
			System.out.println(b);
			long l = dis.readLong();
			System.out.println(l);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(dis != null) {
				try {
					dis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
           
Java IO 處理流之:列印流 和 資料流用法