1.read
这个方法是对这个流一个一个字节的读,返回的int就是这个字节的int表示方式
以下是代码片段,经过测试当eclipse的编码为gbk时,转化出的字符串不需经过重新编码,如果eclipse的编码为utf-8时则由byte转成字符串需重新编成utf-8的
1 2 3 4 5 6 7 8 9 10 11 | 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
1 2 3 4 5 6 7 8 9 10 | 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()方法
1 2 3 4 5 6 7 8 | 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" )); } |