从输入流读取时缺少第一个字符

Jin*_*Jin 1 java inputstream

我不明白为什么以下代码似乎跳过第一个输入字符.

import java.io.*;
import java.util.Arrays;

public class Input
{
    public static void main (String args[])
    {
        try {
            echo(System.in);
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

    static void echo(InputStream stream) throws IOException
    {
        byte[] input = new byte[10];

        char[] inputChar = new char[10];
        int current;
        while ((current = stream.read()) > 0){
            stream.read(input);

            int i = 0;
            while (input[i] != 0) {
                inputChar[i] = (char)input[i];
                if (i < 9) {
                    i++;
                }
                else {
                    break;
                }
            }   
            System.out.println(Arrays.toString(inputChar));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我输入"1234567890",我得到的输出是"[2,3,4,5,6,7,8,9,0,]"inputChar中的最后一个字符似乎是空白的.但是,如果它没有读入任何字节到输入[9],它应该是空字符(ASCII 0).如果我给出一个长度小于10个字符的输入,我会得到inputChar中剩余位置的空字符.所以我不确定这里发生了什么.

小智 8

while((current = stream.read())> 0){

你有第一次阅读,你没有使用它,但它是一个实际的阅读,将推进你的流中的"位置".