程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java IO學習筆記(三)轉換流、數據流、字節數組流

Java IO學習筆記(三)轉換流、數據流、字節數組流

編輯:關於JAVA

Java IO學習筆記(三)轉換流、數據流、字節數組流。本站提示廣大學習愛好者:(Java IO學習筆記(三)轉換流、數據流、字節數組流)文章只能為提供參考,不一定能成為您想要的結果。以下是Java IO學習筆記(三)轉換流、數據流、字節數組流正文


轉換流

1、轉換流:將字節流轉換成字符流,轉換之後就可以一個字符一個字符的往順序寫內容了,並且可以調用字符節點流的write(String s)辦法,還可以在裡面套用BufferedReader()和BufferedWriter,並運用它們的readLine 和 newLine辦法。 2、有兩種轉換流:InputStreamReader、OutputStreamWriter   練習小順序1: package test.io.transfer; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class OutputStreamWriterTest {  public static void main(String args[]){    FileOutputStream fos = null;    FileOutputStream fos1 = null;    OutputStreamWriter opsw = null;    try { fos = new FileOutputStream("E:/技術學習/java/test/Socket/test4.txt"); fos1 = new FileOutputStream("E:/技術學習/java/test/Socket/test5.txt"); opsw = new OutputStreamWriter(fos); opsw.write("轉換流練習"); System.out.println(opsw.getEncoding());//獲取編碼格式 opsw.flush(); opsw.close(); opsw = new OutputStreamWriter(fos1,"GBK"); opsw.write("轉換流練習轉換流練習"); System.out.println(opsw.getEncoding());//獲取編碼格式 opsw.flush();    } catch (IOException e) { e.printStackTrace();    }finally{ try {  fos.close();  opsw.close(); } catch (IOException e) {  e.printStackTrace(); }    }  } }   練習小順序2: package test.io.transfer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class InputStreamReaderTest {  public static void main(String args[]){    InputStreamReader isr = new InputStreamReader(System.in);//System.in是inputstream的子類    BufferedReader bf = new BufferedReader(isr);    String ss = null;    try { while((ss=bf.readLine()) != null){  if(ss.equals("exit")){    break;  }  System.out.println(ss); }    } catch (IOException e) { e.printStackTrace();    }finally{ try {  isr.close();  bf.close(); } catch (IOException e) {  e.printStackTrace(); }    }  } }   數據流、字節數組流 1、數據流:普通的字節流只能讀寫byte[]類型的數據,只能寫int、byte、byte[]類型的數據 ;字符輸出流只能讀char[]類型的數據,字符輸入流只能寫char、char[]、int、String類型的數據。假如想要讀寫long、double、boolean等其他類型的數據,就需求用到數據流。 2、數據流是一種處置流,有兩種數據流:DataInputStream、DataOutputStream,辨別承繼於InputStream和OutputStream。他們需求套在InputStream和OutputStream類型的字節流上操作,下圖中截取一些,詳細辦法見協助文檔。   DataInputStream:

 

DataOutputStream:

 

  DataInputStream的結構辦法:DataInputStream(InputStream in) DataOutputStream 的結構辦法:DataOutputStream(OutputStream out) 3、字節數組流(字節流): ByteArrayInputStream: 字節數組輸出流在內存中創立一個字節數組緩沖區,從輸出流讀取的數據保管在該字節數組緩沖區中,從字節數組中讀數據。 ByteArrayOutputStream:創立字節數組輸入流的同時,內存會為該輸入流創立一個默許大小的字節數組,用於存儲寫入的字節內容。 4、字節數組流的結構辦法: ByteArrayInputStream(byte[] buf); ByteArrayInputStream(byte[] buf, int offset, int length); ByteArrayOutputStream(); 創立字節輸入流的同時內存中會創立一個byte[]字節數組,默許大小。 ByteArrayOutputStream(int size); 創立字節輸入流的同時內存中會創立一個大小為size的byte[]字節數組。 在運用的時分,可以用byte[] b = byteArrayOutputStream.toByteArray()前往流中的字節數組,然後創立ByteArrayInputStream bai = new ByteArrayInputStream(byte[] b)來將輸出流接入到字節數組上。   練習小例子: package test.io.data; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class DataByteArrayStreamTest {  public static void main(String args[]){    ByteArrayOutputStream baos = new ByteArrayOutputStream();    DataOutputStream dos = new DataOutputStream(baos);    ByteArrayInputStream bais = null;    DataInputStream dis = null;    try { dos.writeDouble(Math.random()); dos.writeBoolean(true); dos.flush(); bais = new ByteArrayInputStream(baos.toByteArray()); dis = new DataInputStream(bais); System.out.println(dis.available()); //先進先出,先寫先讀,假如這裡是先讀的Boolean,則會自動找到存入的double數據的第一個字節,當做boolean類型讀出來 System.out.println(dis.readDouble()); System.out.println(dis.readBoolean());    } catch (IOException e) { e.printStackTrace();    }finally{ try {  if(baos != null){    baos.close();  }  if(dos != null){    dos.close();  }  if(bais != null){    bais.close();  }  if(dis != null){    dis.close();  } } catch (IOException e) {  e.printStackTrace(); }    }  } }   控制台輸入後果: 9 0.02241410199042526 true

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved