InputStream的三個read的區(qū)別
1.read這個方法是對這個流一個一個字節(jié)的讀,返回的int就是這個字節(jié)的int表示方式
以下是代碼片段,經(jīng)過測試當eclipse的編碼為gbk時,轉(zhuǎn)化出的字符串不需經(jīng)過重新編碼,如果eclipse的編碼為utf-8時則由byte轉(zhuǎn)成字符串需重新編成utf-8的
InputStream in = Test.class.getResourceAsStream("/tt.txt");
??byte[]tt=new byte[15];//測試用的事前知道有15個字節(jié)碼
??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)
這個方法是先規(guī)定一個數(shù)組長度,將這個流中的字節(jié)緩沖到數(shù)組b中,返回的這個數(shù)組中的字節(jié)個數(shù),這個緩沖區(qū)沒有滿的話,則返回真實的字節(jié)個數(shù),到未尾時都返回-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)
此方法其實就是多次調(diào)用了read()方法
InputStream in = Test.class.getResourceAsStream("/tt.txt");
??//System.out.println(in.available());//此方法是返回這個流中有多少個字節(jié)數(shù),可以把數(shù)組長度定為這個
??
??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"));
??}
posted on 2009-04-24 18:07 tobyxiong 閱讀(57563) 評論(2) 編輯 收藏 所屬分類: java