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ます正しいメッセージを表示するためにプログラムでこのディレクトリを見つけるにはどうすればよいですか?

4

2 に答える 2

1

を使用して解決file.getAbsolutePath()

于 2012-10-16T12:20:24.817 に答える
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

彼はスポットです...

これがお役に立てば幸いです。

ありがとう..

于 2012-10-16T12:15:15.820 に答える