Je veux obtenir la liste de tous les fichiers du stockage interne. J'ai écrit ce code,

File dir= getFilesDir();
        File[] list = dir.listFiles();
        for(File ff: list) {
            Toast.makeText(getApplicationContext(), ff.getName() , Toast.LENGTH_LONG).show();

        }

Il me donne juste Nom du répertoire: exécution instantanée sur Toast, mais ma mémoire interne contient de nombreuses répertoires comme vous pouvez le voir ci-dessous, entrez la description de l'image ici

Veuillez me dire comment obtenir tous ces noms de répertoires.

0
Zohaib 24 janv. 2017 à 19:47

4 réponses

Meilleure réponse

Essaye ça:

String dir = getFilesDir().getAbsolutePath();
0
cru3lgenius 24 janv. 2017 à 17:02

Vous pouvez obtenir des répertoires en utilisant le code ci-dessous ...

File extStorageDir=new File(Environment.getExternalStorageDirectory());
    String fileList=extStorageDir.list();

    for(String fileName:fileList)
    sysout("FileName="+fileNAme);
0
halfer 24 janv. 2017 à 20:46

Votre capture d'écran représente ce que le SDK Android appelle stockage externe, et non le stockage interne. La racine du stockage externe est obtenue via Environment.getExternalStorageDirectory().

0
CommonsWare 24 janv. 2017 à 16:49

J'ai trouvé un moyen de répertorier tout le répertoire dans la mémoire interne. Veuillez essayer ceci, cela fonctionne bien pour moi car je n'utilise que la mémoire interne de mon téléphone.

MainActivity.java

package com.sumesh.filendirectory;

import android.app.ListActivity;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileNDirectoryActivity extends ListActivity {

    private List<String> fileList=new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        File root=new File(Environment.getExternalStorageDirectory().getAbsolutePath());
        ListDir(root);
    }

    void ListDir(File f){
        File[] files=f.listFiles();
        fileList.clear();
        for (File file: files){
            fileList.add(file.getPath());
        }

        ArrayAdapter<String> directoryList=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,fileList);
        setListAdapter(directoryList);
    }
}

Manifest.xml

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

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".FileNDirectoryActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

Fichier MainActivity.xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

J'espère que ça aide. si vous utilisez la version Android 6 ou supérieure, une fois que vous avez installé l'application, elle se bloquera à coup sûr en raison de l'autorisation d'exécution du stockage, comment résoudre maintenant? ajoutez un code d'autorisation d'exécution pour le stockage et si vous êtes paresseux, suivez celui-ci.

  • goto ==> application installée ==> écran d'informations sur l'application
  • sur l'élément de liste d'autorisation, donnez l'autorisation de stockage, puis il fonctionnera correctement.

enter image description here

Autres moyens de le faire:

MainActivity.java

    public class MainActivity extends AppCompatActivity {

    ListView lview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lview = (ListView) findViewById(R.id.lview1);
        String path=Environment.getExternalStorageDirectory().getAbsolutePath();
        File f = new File(path);//converted string object to file
        String[] values = f.list();//getting the list of files in string array
        //now presenting the data into screen
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_dropdown_item, values);
        lview.setAdapter(adapter);//setting the adapter

    }
}

Activity_Main.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/lview1">
    </ListView>

</LinearLayout>

Manifest.xml

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

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        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>

enter image description here

5
curious 6 sept. 2017 à 16:43