Android 如何获取所有电话存储器(内部存储器)目录列表
我想获取内部存储的所有文件列表。我写了这段代码Android 如何获取所有电话存储器(内部存储器)目录列表,android,Android,我想获取内部存储的所有文件列表。我写了这段代码 File dir= getFilesDir(); File[] list = dir.listFiles(); for(File ff: list) { Toast.makeText(getApplicationContext(), ff.getName() , Toast.LENGTH_LONG).show(); } 它只是在Toast上给了我目录名:instant ru
File dir= getFilesDir();
File[] list = dir.listFiles();
for(File ff: list) {
Toast.makeText(getApplicationContext(), ff.getName() , Toast.LENGTH_LONG).show();
}
它只是在Toast上给了我目录名:instant run,但我的内部存储有许多目录,如下图所示,
请告诉我如何得到所有这些目录的名称 您的屏幕截图是Android SDK调用的,而不是。外部存储的根目录是通过
环境获取的。getExternalStorageDirectory()
您的屏幕截图是Android SDK调用的,而不是。外部存储的根目录是通过环境获取的。getExternalStorageDirectory()
您可以使用以下代码获取目录
File extStorageDir=new File(Environment.getExternalStorageDirectory());
String fileList=extStorageDir.list();
for(String fileName:fileList)
sysout("FileName="+fileNAme);
您可以使用下面的代码获取目录
File extStorageDir=new File(Environment.getExternalStorageDirectory());
String fileList=extStorageDir.list();
for(String fileName:fileList)
sysout("FileName="+fileNAme);
试试这个:
String dir = getFilesDir().getAbsolutePath();
试试这个:
String dir = getFilesDir().getAbsolutePath();
我找到了一种列出内部存储中所有目录的方法。请试试这个,它的工作对我来说很好,因为我只使用我的手机内部存储 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);
}
}
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
}
}
package com.sumesh.filen目录;
导入android.app.ListActivity;
导入android.os.Environment;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
导入java.io.File;
导入java.util.ArrayList;
导入java.util.List;
公共类FileNDirectoryActivity扩展了ListActivity{
private List fileList=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
文件根=新文件(Environment.getExternalStorageDirectory().getAbsolutePath());
ListDir(根);
}
void ListDir(文件f){
File[]files=f.listFiles();
fileList.clear();
用于(文件:文件){
添加(file.getPath());
}
ArrayAdapter目录列表=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,fileList);
setListAdapter(目录列表);
}
}
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>
<?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>
<?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>
其他方法:
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);
}
}
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
}
}
public类MainActivity扩展了AppCompatActivity{
列表视图lview;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lview=(ListView)findViewById(R.id.lview1);
字符串路径=Environment.getExternalStorageDirectory().getAbsolutePath();
File f=新文件(路径);//已将字符串对象转换为文件
String[]values=f.list();//获取字符串数组中的文件列表
//现在将数据显示到屏幕中
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,值);
lview.setAdapter(适配器);//设置适配器
}
}
ActivityMain.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>
<?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>
<?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>
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>
<?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>
<?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>
我找到了一种列出内部存储中所有目录的方法。请试试这个,它的工作对我来说很好,因为我只使用我的手机内部存储
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);
}
}
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
}
}
package com.sumesh.filen目录;
导入android.app.ListActivity;
导入android.os.Environment;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
导入java.io.File;
导入java.util.ArrayList;
导入java.util.List;
公共类FileNDirectoryActivity扩展了ListActivity{
private List fileList=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
文件根=新文件(Environment.getExternalStorageDirectory().getAbsolutePath());
ListDir(根);
}
void ListDir(文件f){
File[]files=f.listFiles();
fileList.clear();
用于(文件:文件){
添加(file.getPath());
}
ArrayAdapter目录列表=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,fileList);
setListAdapter(目录列表);
}
}
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>
<?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>
<?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>
其他方法:
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);
}
}
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
}
}
public类MainActivity扩展了AppCompatActivity{
列表视图lview;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lview=(ListView)findViewById(R.id.lview1);
字符串路径=Environment.getExternalStorageDirectory().getAbsolutePath();
File f=新文件(路径);//已将字符串对象转换为文件
String[]values=f.list();//获取字符串数组中的文件列表
//现在将数据显示到屏幕中
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,值);
lview.setAdapter(适配器);//设置适配器
}
}
ActivityMain.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>
<?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>
<?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>
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>
<?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>
<?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>
我知道getExternalStorageDirectory(),但我想获取内部存储目录。我该怎么做?@Zohaib:让我试试黑体字:你的截图是Android SDK所称的外部存储,而不是内部存储。如果要重现屏幕截图中的内容,请使用Environment.getExternalStorageDirectory()
。您不能使用getFilesDir()
“获取所有这些目录名”,因为“所有这些目录”都在外部存储上。@从API 29环境开始的Commonware。getExternalStorageDirectory()已被弃用。还有其他方法吗?@MADLAD:在Android 10上,一旦您的targetSdkVersion
达到29或更高版本,您将无法读取外部存储上的内容,除非在少数有限的位置。马上