2016-08-21 3 views
-1

Wie Bytes erstellt von FileInputStream Klasse erstellt werden? Beispiel, wenn die Datei die Nummer 12 enthält, gelesen von FileInputStream, die generierten Bytes sind [49, 50, 13, 10], warum?Wie funktioniert der FileInputStream-Algorithmus?

import java.io.*; 
public class exp{ 
    public static void main(String[] args){ 
     InputStream is = null; 
     try{ 
      is = new FileInputStream(new File("./info.txt")); 
     }catch(Exception e){} 
     while(true){ 
      byte b = 0; 
      try{ 
       b = (byte) is.read(); 
      }catch(Exception e){} 
      if(b == -1) break; 
      System.out.println(b); 
     } 
    } 
} 

12 als 32-Bit in binären 00000000 00000000 00000000 00001100

Bytes sollte [0, 0, 0, 12] anstelle von [49, 50, 13, 10] sein.

+1

Verstehen Sie, dass Sie nicht die Nummer selbst, sondern ihre Textdarstellung übertragen und Text lesen und übertragen, einschließlich des ASCII-Zeichencodes für "1", "2" und Zeilenvorschübe. –

+3

Dies ist, weil die '12' nur ein Text ist. "1" und "2" in ASCII sind 49 und 50, und das neue Zeilenzeichen und Wagenrücklaufzeichen sind ebenfalls in der Datei enthalten und haben die ASCII-Codes 10 und 13 – technikfischer

Antwort

3

Es ist ASCII.

49 == '1' 
50 == '2' 
13 == '\r' //carriage return 
10 == '\n' //end of line 

Es ist, weil die Datei eine Textdatei und keine Binärdatei ist. Alles ist richtig, wenn die Datei auf einem Linux-Rechner geschrieben wurde, würde sie nur vier Zeichen enthalten.