当前位置: 首页 > 知识库问答 >
问题:

如何读取BufferedInputStream中的行?

诸葛煜
2023-03-14

我正在编写一个代码,使用BufferedInputStream从用户处读取输入,但由于BufferedInputStream读取字节,我的程序只读取第一个字节并打印它。除了只读取第一个字节外,还有什么方法可以读取/存储/打印整个输入(将是整数)?

import java.util.*;
import java.io.*;
class EnormousInputTest{

public static void main(String[] args)throws IOException {
        BufferedInputStream bf = new BufferedInputStream(System.in)   ;
    try{
            char c = (char)bf.read();

        System.out.println(c);
    }
finally{
        bf.close();
}   
}   
}

输出:

[shadow@localhostcodechef]$java巨大输入测试5452 5

共有2个答案

贡可人
2023-03-14

你可以在while循环中运行这个。

试试下面的代码

BufferedInputStream bf = new BufferedInputStream(System.in)   ;
    try{
        int i;
        while((i = bf.read()) != -1) {
            char c = (char) i;
            System.out.println(c);
        }
    }
    finally{
        bf.close();
    }
}

但是请记住,这种解决方案比使用BufferedReader效率低,因为InputStream。read()对读取的每个字符进行系统调用

曹沛
2023-03-14

BufferedInputStream用于读取字节。读一行包括读字符。

您需要一种将输入字节转换为字符集定义的字符的方法。因此,您应该使用读取器,该读取器将字节转换为字符,并且您可以从中读取字符BufferedReader还有一个读取整行的readLine()方法,请使用该方法:

BufferedInputStream bf = new BufferedInputStream(System.in)

BufferedReader r = new BufferedReader(
        new InputStreamReader(bf, StandardCharsets.UTF_8));

String line = r.readLine();
System.out.println(line);
 类似资料:
  • 我在一个教程中看到,BufferedInputStream类本身中的int read(字节b[],int off,int len)使用read()方法读取数据。 所以我的问题是,正常模式和不使用BufferedInputStream和使用buffer有什么区别?缓冲区应该以块的形式读取字节以降低成本,但这里它是逐字节读取。

  • 我知道将BufferedInpurStream包装在FileInputStream周围会使读取操作更快,但我想知道如何做到这一点。我看了BufferedInpurStream的源代码,得到了一些东西。这是我的理解 当我做了这件事。read(),在内部,它将首先在缓冲区中一次读取字节块,然后从缓冲区中逐个读取每个字节,而不是从文件中读取(成本更高)。一旦缓冲区为空,它将再次用字节块填充它 而使用Fi

  • 关于BufferedInputStream的使用,我有几个问题: 首先,我听说BufferedInputStream可以显著提高性能,如果您从硬盘上逐字节读取数据的话。 > 在这里使用BufferedInputStream会被证明非常有用吗? 同样,BufferedInputStream在逐字节读取时是否仅在套接字中起作用,即逐字节读取是否仅对预加载缓冲区有用?

  • 问题内容: 我需要传递给jqgrid,但找不到如何执行此操作的任何示例。这是我的尝试: 从服务器发送: 并在jqgrid中: 如何从jqgrid 发送和阅读? 编辑:我知道我正在被发送,因为我可以在Fiddler中看到它。我认为我只是停留在如何在客户端上阅读它。 问题答案: 通常,的用法非常简单。jqGrid支持您从服务器发送 将与jqGrid数据一起保存的 任何其他 数据。所以,如果jqGrid

  • 我绝望了,。。。我已经试了很多次了,没有运气。请帮忙 背景知识:我使用raspberry Pi 3开发了一个网络摄像头流媒体服务器,因为我不想要可用的服务器。使用raspistill时,fps非常低(4fps),这就是为什么我考虑使用v4l2选项来流式传输网络摄像机。为此,我将mjpeg视频输出到管道中。 从该管道读取时,将显示第一个jpeg图像,但连续读取返回null。 为了进一步调查这一点,我

  • 问题内容: 让我以谨慎的态度为这篇文章做开头。我是Java的初学者。我已经对PHP进行了一段时间的编程,但是我准备制作一个桌面应用程序,因此出于各种原因,我决定使用Java。 我正在处理的应用程序处于起步阶段(少于5个类),我需要从本地文件读取字节。通常,文件当前小于512kB(但将来可能会更大)。目前,我正在使用a 将文件读取为三个字节的数组,这完全可以满足我的要求。但是,我已经看到一个提及,并