2012-12-25 8 views
0

Android 용 작은 앱을 쓰고 있습니다. 파일을 만들려고합니다. 다음은 코드 스 니펫입니다.만든 파일을 찾을 수 없습니다.

final String TESTSTRING = new String("Hello Android");     
FileOutputStream fOut = openFileOutput("samplefile.txt",Context.MODE_WORLD_READABLE); 
OutputStreamWriter osw = new OutputStreamWriter(fOut); 
osw.write(TESTSTRING); 
osw.flush(); 
osw.close(); 

FileInputStream fIn = openFileInput("samplefile.txt"); 
InputStreamReader isr = new InputStreamReader(fIn); 
char[] inputBuffer = new char[TESTSTRING.length()]; 

isr.read(inputBuffer); 

String readString = new String(inputBuffer); 

boolean isTheSame = TESTSTRING.equals(readString); 

if(isTheSame) { 
    TextView mLat=(TextView) findViewById(R.id.textView1); 
    mLat.setText(String.valueOf(isTheSame));  
} 

파일 관리자를 사용하여 생성 된 samplefile.txt를 찾을 수 없습니다. 누군가가 앱이 쓰고있는 경로를 말해 줄 수 있습니까? OutputStream에 운영 체제 = 새로운 FileOutputStream에 (AppDirectory를) 던져

String pathToExternalStorage = Environment.getExternalStorageDirectory().toString(); 
    File appDirectory = new File(pathToExternalStorage + "/" + "testowa", "new_file.txt"); 
    try{ 
     OutputStream os = new FileOutputStream(appDirectory); 
     os.write(pathToExternalStorage.getBytes()); 
     os.flush(); 
     os.close(); 
    } 
    catch(IOException e) 
    { 

    } 

예외; 확인

지금 나는이 있습니다 왜 그럴까요? 권한이 수정 된 매니페스트

답변

0

이 파일은 /data/data/your.package.name/files에 있습니다. 그러나이 디렉토리는 파일 관리자에게 표시되지 않습니다 (루트 권한이없는 경우).

+0

그래서 사용자가 파일을 볼 수있게하려면 외장 드라이브를 사용해야합니까? – szpic

+0

예,'Environment.getExternalStoragePublicDirectory'를 살펴보면 외부에서 볼 수있는 파일을 저장할 수있는 디렉토리를 반환합니다. – Henry

0

openFileOutput(name)을 사용하여 생성 된 파일의 경로는 getFileStreamPath(name)을 사용하여 얻을 수 있습니다. 그러나 파일 관리자 앱은이 경로를보기 위해 루트 권한이 필요합니다.

1

파일은 /data/data/com.yourpackagename/files/filename.txt에 있으며이 파일은 장치가 루팅되어 있지 않으면 숨겨집니다. 파일이 생성 된 디렉토리에서 파일을 복사하여 액세스 할 수 있습니다. 명령 줄에서

:

장치를 근절하지 않고 SQLite는 데이터베이스

cat /data/data/com.yourpackagename/databases/dbname.db > /sdcard/dbname.sqlite 

이 솔루션은 작동을 위해 또는 파일

adb -d shell 
    run-as com.yourpackagename 
    cat /data/data/com.yourpackagename/files/filename.txt > /sdcard/filename.txt 

를 복사합니다.

관련 문제