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();
...
내가 뭘 잘못하고 있거나 어떻게해야합니까? 감사!
답변
BufferedReader
InputStream
직접 포장 할 수 없습니다 . 그것은 또 다른 포장 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);