Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FileInputStream算法是如何工作的?_Java_Inputstream_Fileinputstream - Fatal编程技术网

Java FileInputStream算法是如何工作的?

Java FileInputStream算法是如何工作的?,java,inputstream,fileinputstream,Java,Inputstream,Fileinputstream,如何创建由FileInputStream类创建的字节? 示例:如果文件包含由FileInputStream读取的数字12,生成的字节是[49,50,13,10],为什么 import java.io.*; public class exp{ public static void main(String[] args){ InputStream is = null; try{ is = new FileInputStream(new

如何创建由
FileInputStream
类创建的字节? 示例:如果文件包含由
FileInputStream
读取的数字12,生成的字节是[49,50,13,10],为什么

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
作为32位二进制
00000000000000000000001100

字节应该是
[0,0,0,12]
而不是
[49,50,13,10]

这是ASCII码

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

这是因为该文件是文本文件而不是二进制文件。一切都是正确的,如果文件是在Linux机器上编写的,它将只包含四个字符。

请理解,您不是在传输数字本身,而是在传输其文本表示,并且正在读取和传输文本,包括“1”、“2”的asci字符代码,这是因为
12
只是一个文本1和
2分别为49和50,文件中还包括新行字符和回车字符,具有ASCII代码10和13