永发信息网

android怎么获取文件夹目录

答案:2  悬赏:50  手机版
解决时间 2021-02-23 10:20
android怎么获取文件夹目录
最佳答案
有的时候程序需要去对android的指定目录或者全局目录进行遍历获取其中的文件,但是获取文件的时候可能会遇到无法列出文件夹中的文件的问题,这就是出现的问题,对于某个子文件夹进行获取listFiles()的时候返回为NULL,也就是不允许列出文件夹中内容。
  这个是由于android中的安全机制的缘故,由于android继承了Linux系统的传统,对于某个特定的目录有用户的权限,一共分为三种--可读,可写,可执行;虽然说可以设置某个特定的目录的权限,但是对于目录里面的子目录和子文件都可以进行权限的设置,也就是说出了根目录权限之外,子目录本身的权限也决定了子目录可否访问,这一点需要清楚了解,所以在判断完了是否是目录之外,还需要在进行listFiles()获取File[]数据后判断获取的数组是否为空,如果为空的话,文件夹是不可访问的。样例代码如下:
  01 package net.nowamagic.file;
  02 import java.io.File;
  03 import java.util.ArrayList;
  04 import java.util.HashMap;
  05 import java.util.Map;
  06 import android.util.Log;
  07
  12 public class FileScan {
  13
  14 private static final String TAG = "FileScan";
  15 public HashMap getMusicListOnSys(File file) {
  16
  17 //从根目录开始扫描
  18 Log.i(TAG, file.getPath());
  19 HashMap fileList = new HashMap();
  20 getFileList(file, fileList);
  21 return fileList;
  22 }
  23
  24
  29 private void getFileList(File path, HashMap fileList){
  30 //如果是文件夹的话
  31 if(path.isDirectory()){
  32 //返回文件夹中有的数据
  33 File[] files = path.listFiles();
  34 //先判断下有没有权限,如果没有权限的话,就不执行了
  35 if(null == files)
  36 return;
  37
  38 for(int i = 0; i < files.length; i++){
  39 getFileList(files[i], fileList);
  40 }
  41 }
  42 //如果是文件的话直接加入
  43 else{
  44 Log.i(TAG, path.getAbsolutePath());
  45 //进行文件的处理
  46 String filePath = path.getAbsolutePath();
  47 //文件名
  48 String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
  49 //添加
  50 fileList.put(fileName, filePath);
  51 }
  52 }
  53
  54 }
全部回答
参考如下代码: package com.aina.android; import java.io.file; import java.util.arraylist; import java.util.list; import android.app.alertdialog; import android.app.listactivity; import android.content.dialoginterface; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.listview; import android.widget.textview; public class test_listfile extends listactivity { private list items = null;//存放名称 private list paths = null;//存放路径 private string rootpath = "/"; private textview tv; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); tv = (textview) this.findviewbyid(r.id.textview); this.getfiledir(rootpath);//获取rootpath目录下的文件. } public void getfiledir(string filepath) { try{ this.tv.settext("当前路径:"+filepath);// 设置当前所在路径 items = new arraylist(); paths = new arraylist(); file f = new file(filepath); file[] files = f.listfiles();// 列出所有文件 // 如果不是根目录,则列出返回根目录和上一目录选项 if (!filepath.equals(rootpath)) { items.add("返回根目录"); paths.add(rootpath); items.add("返回上一层目录"); paths.add(f.getparent()); } // 将所有文件存入list中 if(files != null){ int count = files.length;// 文件个数 for (int i = 0; i < count; i++) { file file = files[i]; items.add(file.getname()); paths.add(file.getpath()); } } arrayadapter adapter = new arrayadapter(this, android.r.layout.simple_list_item_1, items); this.setlistadapter(adapter); }catch(exception ex){ ex.printstacktrace(); } } @override protected void onlistitemclick(listview l, view v, int position, long id) { super.onlistitemclick(l, v, position, id); string path = paths.get(position); file file = new file(path); //如果是文件夹就继续分解 if(file.isdirectory()){ this.getfiledir(path); }else{ new alertdialog.builder(this).settitle("提示").setmessage(file.getname()+" 是一个文件!").setpositivebutton("ok", new dialoginterface.onclicklistener(){ public void onclick(dialoginterface dialog, int which) { } }).show(); } } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
脸色偏黄,带什么颜色的眼镜框能显得脸白一些
在我们身体里有遍布全身的大大小小的血管,血
形容刀法的成语
经期能打白蛋白吗
有两种脂肪组织――褐色脂肪组织和白色脂肪组
哈上工量具地址在什么地方,想过去办事
山林果园有桃树两千棵比梨树多25%果原有梨树
扒沟在哪里啊,我有事要去这个地方
如何设置公式使得Excel里面A1能够一直减去A2.
张俊哲名字测分多少分?
宏达手机广场地址在哪,我要去那里办事
电脑状态已受保护是什么意思
黄桃罐头多少钱一箱
狮子座用英文怎么说,全拼,不要缩写
我想问一下,现在光环地带动漫城一期现在还有
推荐资讯
请问什么是肉喇叭?
文案专员 用英语怎么说
想吧神舟战神zx8系统换成win7的,请问可以换
一部吸血鬼动画片,有一个叫小唯的是半个吸血
你是我的眼主题曲
温州文成大学镇现在的房价怎么样。现在买划算
【勤勉的意思】“忞慔”是勤勉的意思。
座机占线是什么原因
恒发集团怎么去啊,有知道地址的么
麻雀幼仔吃什么,怎么养
国企把要交的三金全算到我们的工资里,这个说
维度·爱钻新乡店在哪里啊,我有事要去这个地
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?