Android App相关的读写路径

没有权限的时候,可以看一下External是否可读

Log.d(TAG, " ExternalStorageWritable: " + isExternalStorageWriteable());
Log.d(TAG, " ExternalStorageEReadable: " + isExternalStorageReadable());

result:
ExternalStorageWritable: true
ExternalStorageEReadable: true

SD 卡公共目录,这些目录仍然可以访问,不受权限限制

String publicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
Log.d(TAG, " publicDir: " + publicDir);

result:
publicDir: /storage/emulated/0/Pictures

程序相关的 SD 卡外部存储目录,这个目录位于 SD 卡,Android 4.4(API 19)之后, 应用程序可以随意读写。
注:Android 4.4(API 19)之后,读取getExternalFilesDir()的路径就不需要申请WRITE_EXTERNAL_STORAGE权限了。通过getExternalFilesDir()获得的路径是在external storage上每一个APP自己的目录。
但是需要注意的是,如果你的API <= 18 还是需要添加WRITE_EXTERNAL_STORAGE权限。

<uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"
     android:maxSdkVersion="18" />
String externalFileDir = this.getExternalFilesDir(null).toString();
String exterCacheDir = this.getExternalCacheDir().toString();
Log.d(TAG, " externalFileDir: " + externalFileDir + "\n exterCacheDir: " + exterCacheDir);

result:
externalFileDir: /storage/emulated/0/Android/data/com.example.fredwang.fredtest/files
exterCacheDir: /storage/emulated/0/Android/data/com.example.fredwang.fredtest/cache

程序相关的 内置存储目录,这个目录位于内置 flash,应用程序可以随意读写


String cacheDir = this.getCacheDir().toString();
String fileDir = this.getFilesDir().toString();
Log.d(TAG, " cacheDir: " + cacheDir + "\n fileDir: " + fileDir);

result:
cacheDir: /data/data/com.example.fredwang.fredtest/cache
fileDir: /data/data/com.example.fredwang.fredtest/files

通过openFileOutput 将文件存放在internal的文件夹

public boolean saveFile() {
    String FILENAME = "FRED_FISH.txt";
    String string = "hello_world";
    FileOutputStream fos = null;

    try {
        fos = openFileOutput(FILENAME, MODE_PRIVATE);
        fos.write(string.getBytes());

        Log.d(TAG, " return true; ");
        return true;

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (fos != null) {
            try {

                Log.d(TAG, " fos.close; ");
                fos.close();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }

    }
    return false;
}

result:
/data/data/com.example.fredwang.fredtest/files # ls
FRED_FISH.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值