2012-10-16 97 views
2
static final String FILE_LOG = "log.txt"; 

private void SaveLogToExternalStorage() 
{ 
    String s = tv_log.getText().toString(); 
    File file; 
    FileOutputStream fos = null; 

    try 
    { 
     file = new File(getExternalFilesDir(null), FILE_LOG); 
     fos = new FileOutputStream(file); 
    } 
    catch(FileNotFoundException e) 
    { 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
     return; 
    } 

    try 
    { 
     fos.write(s.getBytes()); 
     fos.close(); 
    } 
    catch(IOException e) 
    { 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
     return; 
    } 

    String savedFile = Environment.getExternalStorageDirectory() + "/" + FILE_LOG; 
    Toast.makeText(this, "Log is saved to " + savedFile, Toast.LENGTH_SHORT).show(); 
} 

此函數打印Log is saved to mnt/sdcard/log.txt其實我如何才能找到這個目錄編程,以顯示正確的消息的文件保存到mnt/sdcard/Android/data/package.name/files/log.txt如何找到外部存儲目錄

+1

解決getExternalFilesDir和getExternalStorageDirectory是明顯不一樣的功能。你也可以從'file'獲得路徑。 – Zharf

回答

1

使用file.getAbsolutePath()

0

只需更改以下行。

String savedFile1 = Environment.getExternalStorageDirectory() + getFileStreamPath(FILE_LOG).toString(); 
Toast.makeText(this, "Log is saved to " + savedFile1, Toast.LENGTH_LONG).show(); 
Log.d("File", savedFile1); 

這將讓像輸出:/mnt/sdcard/data/data/com.android.experimentalproject/files/log.txt

而且按照亞歷克斯·法伯..

String savedFile = file.getAbsolutePath().toString(); 
Toast.makeText(this, "Log is saved to " + savedFile, Toast.LENGTH_SHORT).show(); 
Log.e("PATH", savedFile1); 

輸出:/mnt/sdcard/Android/data/com.android.experimentalproject/files/log.txt

他點上......

希望這會幫助你。

謝謝..

+0

/data/data/com.android.experimentalproject/files/log.txt是內部存儲。當然,這沒有幫助。 –

相關問題