2016-10-25 10 views
1

のファイルを使用するには、前の実装のために必要ですが、BufferedReaderは使用できません。InputStreamを使用してファイルの行を読み取る

while ((line = br.readLine()) != null) 

しかしながらBRは今InputStream(と改名される)であることが必要である。のでよう

私のテストベンチがBufferedReaderとwhileループを使用します。 InputStreamでこの方法で読む方法はありますか?また、一度にバイトを読み取って\nを検索する必要がありますか?

+0

偽の重複o f http://stackoverflow.com/questions/309424/read-convert-an-inputstream-to-a-string –

答えて

4

InputStreamで読み込む必要がある場合は、InputStreamReaderにラップしてBufferedReaderでラップし、使い慣れたBufferedReaderメソッドを使用できるようにします。この状況では、バッファされていない入力を行う必要はありません。

// assuming that you have an InputStream named inputStream 
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { 
    String line = null; 
    while((line = br.readLine()) != null) { 
     // use line here 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

または代替としては、スキャナオブジェクトにInputStreamをラップ:

try (Scanner scanner = new Scanner(inputStream)) { 
    while (scanner.hasNextLine()) { 
     String line = scanner.nextLine(); 
     // use line here 
    } 
} 
1

あなたはこののようにコードを変更することができます

public String readLine(InputStream inputStream) throws IOException { 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     int r; 

     for (r = inputStream.read(); r != '\n' && r != -1 ; r = inputStream.read()) { 
      baos.write(r); 
     } 

     if (r == -1 && baos.size() == 0) { 
      return null; 
     } 

     String lines = baos.toString("UTF-8"); 
     return lines; 
     } 

はたぶん、この例では、あなたを助けます。..

関連する問題