La diferencia entre las tres lecturas de InputStream

La diferencia entre las tres lecturas de InputStream

1.
El método de lectura lee este flujo en un byte y el int devuelto es la representación int de este byte. El
siguiente es un fragmento de código. Después de la prueba, cuando la codificación de eclipse es gbk, no es necesario pasar la cadena convertida Volver a codificar: si la codificación de eclipse es utf-8, el byte debe convertirse en una cadena y debe volver a codificarse en 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)
Este método primero especifica una longitud de matriz, almacena en el buffer los bytes de esta secuencia en la matriz b y devuelve el número de bytes en esta matriz. Si el buffer no está lleno, devuelve el número real de bytes y devuelve -1 cuando se llega al final.

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)
Este método en realidad llama al método read() varias veces

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"));
  }

Supongo que te gusta

Origin blog.csdn.net/lb687/article/details/76573889
Recomendado
Clasificación