如何从android 5中的外部存储中删除文件

时间:2016-07-18 06:36:40

标签: android delete-file android-permissions android-external-storage

我用过

File f=new File(MyPath);
f.delete();

我使用了权限WRITE_EXTERNAL_STORAGEREAD_EXTERNAL_STORAGE,但它在Android 5中无法使用。

Logcat消息:

java.io.FileNotFoundException: storage/external_SD/mm.txt: open failed: EACCES (Permission denied)  

清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mahestan_programming.myapplication">

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
  

自版本4.4以来,我们无法从微SD卡中删除和写入文件。它现在只读。

4 个答案:

答案 0 :(得分:2)

请仔细检查您的文件路径,路径如下:

String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Audio/audio_20160622_081844.3gp";
File file = new File(filePath);
if (file.exists()) {
   file.delete();
}

答案 1 :(得分:1)

storage/external_SD/mm.txt

这不是一条有效的道路。你应该使用

/storage/external_SD/mm.txt

这不是外部存储开始。它是可移动存储。

从Android 4.4开始,应用无法再写入微型SD卡了。

谷歌决定这样做。

我们必须忍受它。但很难。

答案 2 :(得分:0)

试试这个:

  private ArrayList<String> _filePaths = new ArrayList<String>();
  final String imgPath=_filePaths.get(_postion);
        final Snackbar snackbar = Snackbar
                .make(view, "Delete Image?", Snackbar.LENGTH_LONG)
                .setAction("DELETE", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        File file = new File(imgPath);
                        file.delete();

                        Snackbar snackbar1 = Snackbar.make(view, "Image Deleted!", Snackbar.LENGTH_SHORT);
                        notifyDataSetChanged();
                        View sbView = snackbar1.getView();
                        TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
                        textView.setTextColor(Color.YELLOW);
                        snackbar1.show();

                    }
                });
        snackbar.setActionTextColor(Color.RED);
        View sbView = snackbar.getView();
        TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
        textView.setTextColor(Color.YELLOW);
        snackbar.show();

如果它没有工作意味着发布logcat和你正在使用的代码

答案 3 :(得分:0)

您收到java.io.FileNotFoundException,这意味着文件路径storage/external_SD/mm.txt错误。

在我的设备上,我有不同的位置,其中一个是你想要的,我想。

  1. /external_sd/ - 没有storage前缀
  2. /storage/sdcard0 - 虚拟SD卡,由Sony提供
  3. /storage/sdcard1 - 插入设备的真实物理SD卡
  4. 您也可以在Android Studio中手动查看文件系统。请点击“工具” - &gt; “Android” - &gt; “Android设备监视器”。在lefy和右侧的“File explorer”选项卡中选择您的设备,您就可以查看设备上的所有文件。