InputStream的三個read的區別

1.read
這個方法是對這個流一個一個字節的讀,返回的int就是這個字節的int表示方式
如下是代碼片斷,通過測試當eclipse的編碼爲gbk時,轉化出的字符串不需通過從新編碼,若是eclipse的編碼爲utf-8時則由byte轉成字符串需從新編成utf-8的

InputStream in = Test.class.getResourceAsStream("/tt.txt");
  byte[]tt=new byte[15];//測試用的事前知道有15個字節碼
  while(in.available()!=0){
   
   for(int i=0;i<15;i++){
    tt[i]=(byte)in.read();
   }
  }
  String ttttt=new String(tt,"utf-8");
  System.out.println(ttttt);
  in.close();

2. read(byte[] b)
這個方法是先規定一個數組長度,將這個流中的字節緩衝到數組b中,返回的這個數組中的字節個數,這個緩衝區沒有滿的話,則返回真實的字節個數,到未尾時都返回-1

in = Test.class.getResourceAsStream("/tt.txt");
  byte [] tt=new byte[1024];
  int b;
  while((b=in.read(tt))!=-1){
   
   System.out.println(b);
  String tzt=new String(tt,"utf-8");
  
  
  System.out.println(tzt);

3. read(byte[] b, int off, int len) 此方法其實就是屢次調用了read()方法 InputStream in = Test.class.getResourceAsStream("/tt.txt");   //System.out.println(in.available());//此方法是返回這個流中有多少個字節數,能夠把數組長度定爲這個      byte[]tt=new byte[in.available()];   int z;   while((z=in.read(tt, 0, tt.length))!=-1){    System.out.println(new String(tt,"utf-8"));   }
相關文章
相關標籤/搜索