[java] InputStream을 BufferedReader로 변환

Android의 자산 디렉토리에서 InputStream을 사용하여 한 줄씩 텍스트 파일을 읽으려고합니다.

readLine ()을 사용할 수 있도록 InputStream을 BufferedReader로 변환하고 싶습니다.

다음 코드가 있습니다.

InputStream is;
is = myContext.getAssets().open ("file.txt");
BufferedReader br = new BufferedReader (is);

세 번째 줄에는 다음과 같은 오류가 발생합니다.

이 줄에 여러 마커
생성자 BufferedReader (InputStream)가 정의되지 않았습니다.

C ++에서하려고하는 것은 다음과 같습니다.

StreamReader file;
file = File.OpenText ("file.txt");

line = file.ReadLine();
line = file.ReadLine();
...

내가 뭘 잘못하고 있거나 어떻게해야합니까? 감사!



답변

BufferedReaderInputStream직접 포장 할 수 없습니다 . 그것은 또 다른 포장 Reader. 이 경우 다음과 같은 작업을 수행하려고합니다.

BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));


답변

BufferedReader 생성자는 InputStream이 아닌 독자 를 인수로 사용합니다. 먼저 스트림에서 리더를 만들어야합니다.

Reader reader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(reader);

또한 StreamReader 생성자에 Charset 또는 문자 인코딩 이름을 제공하는 것이 좋습니다. 스트림은 바이트 만 제공하므로이를 텍스트로 변환하면 인코딩을 알아야합니다. 지정하지 않으면 시스템 기본값이 사용됩니다.


답변

InputStream is;
InputStreamReader r = new InputStreamReader(is);
BufferedReader br = new BufferedReader(r);


답변