Tag: bufferedreader

使用BufferedReader读取所有行

我想使用BufferedReader在控制台中键入多行文本,当我点击“Enter”以查找整个文本长度的总和时。 问题是,我似乎进入了无限循环,当我按下“Enter”时,程序没有结束。 我的代码如下: InputStreamReader instream = new InputStreamReader(System.in); BufferedReader buffer = new BufferedReader(instream); line= buffer.readLine(); while (line!=null){ length = length + line.length(); line= buffer.readLine(); } 你能告诉我我做错了什么吗?

我可以偷看BufferedReader吗?

有没有办法检查BufferedReader对象中是否有东西要读? 像C ++ cin.peek()这样的东西。 谢谢。

获取BufferedReader中read()返回的字符

如何将BufferedReader read()返回的整数转换为实际字符值,然后将其附加到String? read()返回表示读取字符的整数。 当我这样做时,它不会将实际字符附加到String中。 相反,它将整数表示本身附加到String。 int c; String result = “”; while ((c = bufferedReader.read()) != -1) { //Since c is an integer, how can I get the value read by incoming.read() from here? response += c; //This appends the integer read from incoming.read() to the String. I wanted the character read, not the integer […]

BufferedReader跳过第一行

我使用以下bufferedreader来读取文件的行, BufferedReader reader = new BufferedReader(new FileReader(somepath)); while ((line1 = reader.readLine()) != null) { //some code } 现在,我想跳过阅读文件的第一行,我不想使用计数行int lineno来保持行的计数。 这个怎么做?

为什么BufferedReader的性能比BufferedInputStream差得多?

我知道使用BufferedReader(包装FileReader)将比使用BufferedInputStream(包装FileInputStream)慢得多,因为原始字节必须转换为字符。 但我不明白为什么它这么慢! 以下是我正在使用的两个代码示例: BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(filename)); try { byte[] byteBuffer = new byte[bufferSize]; int numberOfBytes; do { numberOfBytes = inputStream.read(byteBuffer, 0, bufferSize); } while (numberOfBytes >= 0); } finally { inputStream.close(); } 和: BufferedReader reader = new BufferedReader(new FileReader(filename), bufferSize); try { char[] charBuffer = new char[bufferSize]; int numberOfChars; do { numberOfChars […]

从输入读取时,为什么Scanner比BufferedReader慢?

我理解Scanner的优点,以及何时使用Scanner和BufferedReader。 我读了一个不同的,但在一些类似的问题扫描仪与BufferedReader 当我从输入中读取时,为什么Scanner这么慢? 我认为它与扫描仪中有一个小缓冲区有关,但在这里我迷路了。 原始问题来自Codechef ,但我对该解决方案不感兴趣。 这是一个给定输入的代码示例:输入: 7 3 1 51 966369 7 9 999996 1 和代码 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] s = br.readLine().split(” “); int numberOfLines = Integer.parseInt(s[0]); int divideNumber = Integer.parseInt(s[1]); int count = […]

如何在Java 1.4中设置BufferedReader和PrintWriter的超时?

如何在使用套接字连接创建的BufferedReader和PrintWriter上设置超时? 这是我现在为服务器提供的代码,直到服务器或客户端崩溃为止: while(isReceiving){ str = null; BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); while ((str = br.readLine()) != null){ System.out.println(“Processing command ” + str); pw.println(client.message(str)); } } 在这段代码的范围之外,我已经施加了1000毫秒的套接字超时,它在等待初始连接时按预期工作。 但程序阻塞(str = br.readLine())。 如果客户端挂起或崩溃,它永远不会停止阻止,除非我终止进程(即使这样也不总是有效)。 有问题的客户端代码与此非常相似,并且以类似的方式阻塞。

从文本文件中读取数据并创建对象

我需要一些帮助:我正在使用Java进行超市模拟,但我有一个问题,我有一个文本文件(Stock.txt),其中我有所有的超市库存,例如: 0-Bakery-Chocolate Cake- $ 12.5-250 1-Meat-Premium Steak- $ 2.6-120 2-Seafood-Tuna – 1.2-14美元 … 如果第一个数字是产品的“id”,则下一个是产品所属的部门,第三个是产品的名称,下一个是价格,最后一个数字是产品有多少件产品。 我有这堂课: public class Product { protected String name; protected double price; protected String department; protected int id; protected int stock; } 所以,基本上我需要做的是从文本文件中读取每一行并创建产品,即第一行产生如下内容: Product product1 = new Product(0,”Bakery”,”Chocolate Cake”, 12.5, 250); 然后将其添加到数组中 Product[0] = product1; 对于文本文件中的所有内容,然后,在运行模拟时,每个客户将购买随机数量的库存随机产品,因此库存数量将减少。 最后,当模拟结束时,程序必须在同一文本文件中写入每个产品的修改数量。 问题是,这可能太容易了,但我不知道如何做到这一点,因为自从我开始用Java编程(我是初学者)以来,用Java读写文件对我来说是一个真正的问题。 我有一些使用BufferedReader和StringTokenizer类来读取和创建对象问题的想法,但我无法弄明白该怎么做,而且我不知道如何进行覆盖问题。 我真的很感谢你的帮助! 哦! 顺便说一句,我真的只需要使用数组,所以使用ArrayList或任何其他结构,它甚至不是一个选择:(

BufferedReader在应该的时候没有说“准备好”

我试图通过URL上的InputStreamReader(到某些Apache服务器上的文件)使用BufferedReader从Web文档中读取文本。 String result = “”; URL url = new URL(“http://someserver.domain/somefile”); BufferedReader in = null; in = new BufferedReader(new InputStreamReader(url.openStream(), “iso-8859-1”)); result += in.readLine(); 现在这个工作得很好。 但显然我希望读者不要只阅读一行,而是阅读文件中的一行。 查看BufferedReader API,以下代码应该这样做: while (in.ready()) { result += in.readLine(); } 即,当有更多行时读取所有行,当没有更多行时停止。 但是这段代码不起作用 – 读者从不报告ready()= true ! 我甚至可以在读取一行(从文件中读取正确的字符串)之前打印ready()值,但读者将报告“ false ”。 难道我做错了什么? 当实际有东西需要读取时,为什么BufferedReader会在准备就绪时返回’ false ‘?

java:如何使用bufferedreader读取特定的行

假设我有一个名为的文本文件:data.txt(包含2000行) 如何读取给定的特定行:500-1500然后1500-2000并显示特定行的输出? 此代码将读取整个文件(2000行) public static String getContents(File aFile) { StringBuffer contents = new StringBuffer(); try { BufferedReader input = new BufferedReader(new FileReader(aFile)); try { String line = null; while (( line = input.readLine()) != null){ contents.append(line); contents.append(System.getProperty(“line.separator”)); } } finally { input.close(); } } catch (IOException ex){ ex.printStackTrace(); } return contents.toString(); } 如何修改上面的代码以读取特定的行?