2011-10-19 2 views
0

Eclipse로 작업 중입니다. 아무도이 코드가 파일을 어디에서 가져 오려고하는지 알 수 있습니까? 프로젝트 폴더와 srr/package_path 폴더에 파일을 복사했습니다.Android 로컬 xml 파일로드

public String getFromFile(ASerializer aserializer) { 
    String data = new String(); 
    try { 
    FileInputStream stream = new FileInputStream(new File(aserializer.toLocalResource())); 
     FileChannel fc = stream.getChannel(); 
     MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); 
     /* Instead of using default, pass in a decoder. */ 
     data = Charset.defaultCharset().decode(bb).toString(); 
     stream.close(); 
    } 
    catch (Exception e){ 
     data = "File not found"; 
    } 
    return data; 
} 
+0

'ASerializer' 클래스에 대한 자세한 정보를 제공하십시오. –

+0

시리얼 라이저는 파일 이름 만 반환합니다. getFromFile이 어디에서보고 있는지 알 수 없습니다. defaulr 폴더 란 무엇입니까? – iCantSeeSharp

답변

1

그 코드는 FileInputStream을 사용하기 때문에 파일 경로를 전체 안드로이드 파일 시스템의 파일 경로. 즉, 파일 시스템 루트는 응용 프로그램 자원의 어딘가가 아닌 전체 안드로이드 시스템이 상주하는 파일 시스템의 루트가됩니다. 당신은 파일 이름에 따라 응용 프로그램 리소스에서 파일을로드하려면

, 당신은 다음 이클립스 응용 프로그램 프로젝트의 '자산'디렉토리에 파일을 넣을 수 있습니다 사용 :

InputStream inputStream = getResources().getAssets().open("file.xml"); 

InputStream를 얻을 수 작업 할 파일의 AssetManager.open()에 지정된 경로는 'assets'디렉토리에 대한 상대 경로입니다.

InputStream inputStream = getResources().getAssets().open("subdirectory/file.xml"); 
+0

assets 폴더에서 .xml 파일의 이름을 .txt로 변경해야합니다. 프로그램에서 콘텐츠를 파싱하기 때문에 어쨌든 이동하려는 곳이었습니다. 감사합니다! – iCantSeeSharp

+0

은 https://stackoverflow.com/questions/2856407/android-how-to-get-access-to-raw-resources-that-i-put-in-res-folder/2856501#2856501을 참조하십시오. – fangzhzh

0

내가 생각하는 그 자산 폴더 나 내가 정확히 어디에

일식에 한 번가에서 DDMS로 이동 파일 탐색기 탭 으로 이동 찾기 위해 DDMS 파일 탐색기를 사용하는 것이 좋습니다 것 고해상도 폴더 중 당신은 데이터/데이터/패키지 이름에서 응용 프로그램을 찾을 수 있어야합니다 (이것은 메모리에서 약간 벗어날 수 있습니다) 패키지 이름 내의 폴더를 검색하십시오.