Java 如何获取android目录中的所有文件名?
我试图列出我的android emulator的特定文件夹中的所有文件,但总是得到空答案 这是我的密码:Java 如何获取android目录中的所有文件名?,java,android,Java,Android,我试图列出我的android emulator的特定文件夹中的所有文件,但总是得到空答案 这是我的密码: File sdCardRoot = Environment.getExternalStorageDirectory(); File[] file= new File(sdCardRoot+"path"); for (File f : file.listFiles()) { if (f.isFile()) String name = f.getName(); } 这
File sdCardRoot = Environment.getExternalStorageDirectory();
File[] file= new File(sdCardRoot+"path");
for (File f : file.listFiles()) {
if (f.isFile())
String name = f.getName();
}
这似乎不起作用,不知道为什么。改变
File[] file= new File(sdCardRoot+"path");
与
并确保目录
path
退出我已将函数分为两部分,第一个函数获取给定路径中的所有文件,第二个函数从文件数组获取文件名
public File[] GetFiles(String DirectoryPath) {
File f = new File(DirectoryPath);
f.mkdirs();
File[] file = f.listFiles();
return file;
}
public ArrayList<String> getFileNames(File[] file){
ArrayList<String> arrayFiles = new ArrayList<String>();
if (file.length == 0)
return null;
else {
for (int i=0; i<file.length; i++)
arrayFiles.add(file[i].getName());
}
return arrayFiles;
}
public File[]GetFiles(String DirectoryPath){
文件f=新文件(目录路径);
f、 mkdirs();
File[]File=f.listFiles();
返回文件;
}
公共ArrayList GetFileName(文件[]文件){
ArrayList arrayFiles=新的ArrayList();
如果(file.length==0)
返回null;
否则{
对于(int i=0;i只需检查以下内容:
List<File> files = getListFiles(new File("YOUR ROOT"));
private List<File> getListFiles(File parentDir) {
ArrayList<File> inFiles = new ArrayList<File>();
File[] files = parentDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
inFiles.addAll(getListFiles(file));
} else {
if(file.getName().endsWith(".csv")) {
inFiles.add(file);
}
}
}
return inFiles;
List files=getListFiles(新文件(“您的根”);
私有列表getListFiles(文件parentDir){
ArrayList inFiles=新的ArrayList();
File[]files=parentDir.listFiles();
用于(文件:文件){
if(file.isDirectory()){
addAll(getListFiles(file));
}否则{
if(file.getName().endsWith(“.csv”)){
inFiles.add(文件);
}
}
}
返回填充;
由于sdCardRoot
是文件的实例
,sdCardRoot+“path”
将返回与sdCardRoot.toString()+“path”相同的内容
但是,调用file.toString()
会返回文件名,但不会返回绝对路径。您需要调用sdCardRoot.getAbsolutePath()+“path”
另外,请确保您已允许模拟器使用一定数量的内存进行外部存储。如果您可以使用简单的字符串数组,为什么要使用arraylist?其实没有什么区别。因为他使用的是文件,所以他可能想在列表上执行更多操作,而使用arraylist则更容易。我总是更喜欢使用arraylist数组上的arraylist:)较短:公共arraylist GetFiles(字符串路径){arraylist f_arr=new arraylist();File f_path=new File(路径);File[]files=f_path.listFiles();for(File f:files)f_arr.add(f.getName());return f_arr;}。您必须使用File.separator
。试试这个文件[]文件=新文件(sdCardRoot+file.separator+路径)
您没有找到文件分隔符/因此结果字符串是/mnt/sdcardpath,而不是/mnt/sdcard/path。既然文件有一个带两个参数的构造函数,为什么不使用它呢?不,我把路径以“/”开头,我刚才在这里写了路径,以便于阅读。但是我明白了您的意思,将使用逗号。填充不应该是本地的易变的
List<File> files = getListFiles(new File("YOUR ROOT"));
private List<File> getListFiles(File parentDir) {
ArrayList<File> inFiles = new ArrayList<File>();
File[] files = parentDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
inFiles.addAll(getListFiles(file));
} else {
if(file.getName().endsWith(".csv")) {
inFiles.add(file);
}
}
}
return inFiles;