簡體   English   中英

如何讀取BufferedInputStream中的一行?

[英]How to read a line in BufferedInputStream?

我正在編寫一個代碼來使用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 @ localhost codechef] $ java EnormousInputTest 5452 5

BufferedInputStream用於讀取字節 閱讀一行涉及閱讀字符

您需要一種方法將輸入字節轉換為由字符集定義的字符 因此,您應該使用Reader將字節轉換為字符,並從中讀取字符。 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);

你可以在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()會為每個字符讀取系統調用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM