2012-03-12 4 views
1

이것은 꽤 당혹 스럽네요.하지만 텍스트 파일이있어서 java가 그 안에있는 모든 단어를 읽고 배열에 추가하면 텍스트 파일을 어디에 넣을 지 모릅니다 거기에 갈 수 있니? 누군가 나에게 말해 줄 수 있니? 내 코드는 일반 Java 응용 프로그램에서 작동하므로 안드로이드에서 작동해야합니다.android 텍스트 파일 가져 오기 텍스트 파일을 저장할 위치는 어디입니까?

답변

1

을 얻을 수

InputStream stream = getAssets().open(filename); 

를 사용할 수 있습니다.

AssetsManager assets = context.getAssets(); 

open() 메소드로 입력 스트림을 열 수 있습니다.

InputStream inputStream = assets.open("filename"); 

InputStream 객체는 IO 패키지의 표준 Java 객체입니다. 원하는 객체 데코레이터 (Reader, BufferedReader 등)로이 스트림을 꾸밀 수 있습니다.

이 파일을 APK (확장되지 않은 상태)에서 휴대 전화로 이동하려면 출력 스트림을 사용하여 파일의 바이트를 입력 스트림에서 복사하면됩니다. 쓰기 디렉토리에서 권한을 가져야합니다 (전화기가 루팅되어 있고 JNI를 통해 기본 셸 명령을 실행하는 셸 인터페이스를 만든 경우이 작업을 수행 할 수 있음).

UPDATE

try { 
    InputStream inputStream = this.getAssets().open("test.txt"); 
    BufferedReader buffer = new BufferedReader(new Reader(inputStream)); 

    String line; 
    while((line = buffer.readLine()) != null) { 
     tots.add(line); 
    } 
} 
catch(IOException e) { 
    e.printStackTrace(); 
} 

그것을 테스트하지 않은,하지만 나는 이것이 당신이 원하는 생각합니다.

+0

u는 파일 이름을 < >에 들어가는 것과 같은 첫 번째 것을 설명 할 수 있습니까? is test.txt –

+0

애셋을 가져 오려면 컨텍스트 개체가 필요합니다. IE getAssets() 메서드는 컨텍스트 메서드입니다. 그래서 당신이 Activity 나 ContextWrapper로부터 상속받은 것이라면 그냥 "this.getAssets()"라고 말할 수 있습니다. 그렇지 않으면 Assets Manager를 가져 오는 함수/메소드에 컨텍스트 참조를 전달해야합니다. – jjNford

+0

시도 { FileInputStream textfl = (FileInputStream) getAssets(). open ("test.txt"); DataInputStream은 = 새 DataInputStream (textfl)입니다. BufferedReader r = 새 BufferedReader (새 InputStreamReader (is)); 문자열 strLine; while ((strLine = r.readLine())! = null) { tots.add (strLine); // tots는 배열 목록 } } catch (IOException e) { // TODO 자동 생성 catch 블록 e.printStackTrace(); } 지금 당장은 작동하지 않지만 .... 그 문제를 빨리 해결할 수 있습니까? –

0

당신은 당신이 AssetsManager 개체를 반환

<your-context>.getAssets(); 

을 사용할 수 있습니다 자산 폴더에 파일을 넣어 입력 스트림

+0

나는 이것을했지만 코드가 작동하면 오류가 발생합니다. 그게 내 새로운 질문에 대한 링크 어쩌면 그것을 확인하는거야? http : //stackoverflow.com/questions/9676773/read-a-text-file-android –

0

res 폴더에 새 원시 폴더를 만들고 여기에 chapter0.txt를 넣습니다.

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.induction); 

    wordss = new Vector<String>(); 

    TextViewEx helloTxt = (TextViewEx) findViewById(R.id.test); 
    helloTxt.setText(readTxt()); 
} 

private String readTxt() { 

    InputStream inputStream = getResources().openRawResource(R.raw.chapter0); 
    // getResources().openRawResource(R.raw.internals); 
    System.out.println(inputStream); 
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 

    int i; 
    try { 
     i = inputStream.read(); 
     while (i != -1) { 
      byteArrayOutputStream.write(i); 
      i = inputStream.read(); 
     } 
     inputStream.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return byteArrayOutputStream.toString(); 
} 
관련 문제