2012-08-06 2 views
1

myFile.txt 파일을 읽을 수 있기를 원하며, 애셋 폴더, res/raw 폴더 또는 적, 그건 중요하지 않습니다.안드로이드는 앱과 함께 포장 된 .txt 파일로 읽습니다.

BUT!

while ((reader = is.readLine()) != null) { ... } 

나는 주위를 검색 한 닫습니다하지만 정말 내가 찾고되지 것이었다 물건을 발견 : 그 파일의 InputStream를 싶지 않아 ... 내가 좋아하는 뭔가를 할 수 있어야합니다.

도움 주셔서 감사합니다.

편집 - 내가하려고했던 일부 코드 : (? 독자 클래스는 내의 readLine() 메소드가없는 지금의)

InputStream in = this.mCtx.getResources().openRawResource(R.raw.myFile); 
Reader is = new BufferedReader(new InputStreamReader(in, "UTF8")); 

답변

4

그냥

BufferedReader is = new BufferedReader(new InputStreamReader(in, "UTF8")); 

BufferedReaderreadLine()는 메소드가

Reader is = new BufferedReader(new InputStreamReader(in, "UTF8")); 

로 변경 readline에있어서 아니라 판독기를 갖는다. Reader에 불필요하게 알림을 보내고 추가 기능을 잃게됩니다.

+0

끝내 주셔서 감사합니다! 수정 - 난 그냥이 예외를 던질 필요가 나타났습니다 ... 어떤 상황에서이 실패 할 수 있습니다 알 수 있습니까? – JDS

+0

http://developer.android.com/reference/java/io/package-summary.html - InputStreamReader 및 BufferedReader의 생성자에서 throw 된 예외에 대한 설명을보고 싶습니다. –

0

무엇

BufferedReader reader = new BufferedReader(new BufferedInputStream(is)); 

에 대한 편집 : 죄송합니다 - 내 잘못. BufferedReader 만 사용하면됩니다. 정의 대신 리더의 Class#getResourceAsStream)

+0

"is"개체를 어떻게 만들 수 있습니까? InputStream에서? 나는 노력하고있는 코드로 OP를 업데이트 할 것이다. – JDS

1

사용의 BufferedReader를 참조하십시오 ressource 열기 은

InputStream is = getClass().getResourceAsStream("/org/example/res/my_file.txt"); 

수행 할 수 있습니다.

BufferedReader is = new BufferedReader(new InputStreamReader(in, "UTF8")); 

의 BufferedReader는

1

당신의 sdcard에 파일을 저장하고 아래의 코드에서 "FILE_PATH"의 위치를 ​​지정할 수 있습니다

File selectedFile = new File("file_path"); 
FileInputStream fstream = new FileInputStream(selectedFile); 
BufferedReader reader = new BufferedReader(new InputStreamReader(fstream)); 

을 그리고

while ((strLine = reader.readLine()) != null) 
{ 
     //Do Stuff Here 
} 
0

은 수행하려면 다음 단계를 사용하여 ...

File f = new File("/sdcard/MyFolder/MyFile.txt"); 
FileReader fr = new FileReader(f); 
BufferedReader br = new BufferedReader(fr); 

StringBuilder sb = new StringBuilder(); 
String str = new String(); 

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


    sb.append(br.readLine()); 


} 

str = sb.toString(); 
+0

이것은'str'이 아무런 값도 가지지 않기 때문에 새로운 줄을 버립니다. 이것은 아마도 좋은 생각이 아닙니다. 각 행을 직접 처리하거나 나중에 처리 할 수 ​​있도록 새 행을 저장하십시오. – dacwe

0

다음과 같이 사용해야합니다.

BufferedReader in = new BufferedReader(new  InputStreamReader(activity.getAssets().open("yourfile"))); 

StringBuilder buffer = new StringBuilder(); while (line = in.readLine())! = null) buffer.append (line) .append ('\ n');

그리고 자산 디렉토리에 .txt 확장자없이 파일을 넣기 만하면됩니다. 희망이 도움이됩니다.

관련 문제