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

标签 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));
        }
    }
}

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

最佳答案

同时 ((current = stream.read()) > 0){

这里是您的第一次阅读,您没有使用它,但这是一次实际阅读,将提高您在信息流中的“位置”。

关于java - 从输入流读取时缺少第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14487391/

相关文章:

java - 是否有可能在 4.2 之前的 Android 系统上使 Android 应用程序的屏幕方向反转为阿拉伯语、希伯来语

java - 从 Java 中的双端队列获取映射键列表

java - 使用 document.parse(string) 时获取 SAXException

java - 读取/写入文件时出现异常

java - JTable 行背景颜色对于 Double 或 Integer 没有改变

java - iText - 如何将书签名称与特定页码链接

java - 创建具有两种不同格式的文本框

java - 通过InputStream和OutputStream模拟数据序列

java - 如何在 Java 中打印/获取传入 HTTP POST 请求的有效负载(使用套接字)

java - 在 Android/Java 上,连接下载了多少字节?