有的时候程序需要去对android的指定目录或者全局目录进行遍历获取其中的文件,但是获取文件的时候可能会遇到无法列出文件夹中的文件的问题,这就是出现的问题,对于某个子文件夹进行获取listFiles()的时候返回为NULL,也就是不允许列出文件夹中内容。
这个是由于android中的安全机制的缘故,由于android继承了Linux系统的传统,对于某个特定的目录有用户的权限,一共分为三种--可读,可写,可执行;虽然说可以设置某个特定的目录的权限,但是对于目录里面的子目录和子文件都可以进行权限的设置,也就是说出了根目录权限之外,子目录本身的权限也决定了子目录可否访问,这一点需要清楚了解,所以在判断完了是否是目录之外,还需要在进行listFiles()获取File[]数据后判断获取的数组是否为空,如果为空的话,文件夹是不可访问的。样例代码如下:
01 package netnowamagicfile;
02 import javaioFile;
03 import javautilArrayList;
04 import javautilHashMap;
05 import javautilMap;
06 import androidutilLog;
07 /
08 @author
09 function 用于扫描SD卡上的文件
10
11 /
12 public class FileScan {
13
14 private static final String TAG = "FileScan";
15 public HashMap<String, String> getMusicListOnSys(File file) {
16
17 //从根目录开始扫描
18 Logi(TAG, filegetPath());
19 HashMap<String, String> fileList = new HashMap<String, String>();
20 getFileList(file, fileList);
21 return fileList;
22 }
23
24 /
25 @param path
26 @param fileList
27 注意的是并不是所有的文件夹都可以进行读取的,权限问题
28 /
29 private void getFileList(File path, HashMap<String, String> fileList){
30 //如果是文件夹的话
31 if(pathisDirectory()){
32 //返回文件夹中有的数据
33 File[] files = pathlistFiles();
34 //先判断下有没有权限,如果没有权限的话,就不执行了
35 if(null == files)
36 return;
37
38 for(int i = 0; i < fileslength; i++){
39 getFileList(files[i], fileList);
40 }
41 }
42 //如果是文件的话直接加入
43 else{
44 Logi(TAG, pathgetAbsolutePath());
45 //进行文件的处理
46 String filePath = pathgetAbsolutePath();
47 //文件名
48 String fileName = filePathsubstring(filePathlastIndexOf("/")+1);
49 //添加
50 fileListput(fileName, filePath);
51 }
52 }
53
54 }
出处:>
data/data是系统在维护的,一般应用程序无有权限往里面写东西或者改东西。
data/data目录里面的内容,是系统自动写入的。比如你开发了一个应用,在应用中你获取了一个配置getSharedPreferce,然后你提交了一些数据,这写数据,就会由系统生成xml文件,放在data/data/你的应用包名/ 下面,数据库也是一样。
android系统如何通过$ adb 来获得/data/data目录的访问权限
android 是linux内核 /data/data 是root用户的目录,普通用户是无法访问的,如果你需要访问,那么你的手机需要获取root权限。
Root权限的获取方式:
1用手机连接电脑,下载一键root工具。
2下载成功后,打开一键ROOT软件。会出现root准备,点击下一步,正式开始root。
3检查root条件,要是你需要文件备份的话,一定要备份后。点击开始ROOT。
3root正式开始,需要几钟左右时间,期间可能会重启数次,root就会完成。
4root完成后,你就可以随意删除你手机中的垃圾应用了包括系统应用。
当你获取root权限后通过adb访问 /data/data目录:
adb shell 进入shell模式
su 切换到root用户
chmod 777 /data/data 修改/data/data目录的权限为 777即可
exit 退出root用户
cd /data/data 即可进入/data/data 目录了
vista如何设置目录的访问权限啊
首先你要以管理员身份登陆vista系统;
其次,来到c盘里的windows文件夹,进入到system32文件夹里,找到cmdexe文件;
在cmdexe文件上单击鼠标右键,选择“以管理员身份运行”;
命令提示符运行之后,输入: users Administrator /active:yes ;
执行后会激活你所在的Vista系统的超级管理员帐户,并且不受UAC控制获得最高权限
如何设置共享目录的访问权限第一、禁止简单文件共享:
首先打开一个文件夹,在菜单栏的“工具”,“文件夹选项”,“查看”的选项卡,在高级设置里,去掉“使用简单文件共享(推荐)”,如下图:
光是这样并不能启动高级文件共享,这只是禁用了简单文件共享,还必须启用帐户,设置权限,才能达到限制访问的问题。
第二,设置帐户
进入控制面板的用户帐户,有计算机的帐户和来宾帐户。仅仅是开启GUEST帐户并不能达到多用户不同权限的目的。而且在高级文件共享中,Windows XP默认是不允许网络用户通过没有密码的账号访问系统。所以,我们必须为不同权限的用户设置不同的帐户。
假如网络其他用户的访问权限都一样(大多数情况都是这样),我们只需设置一个用户就行了。在用户帐户里,新建一个用户,由于我们必须考虑网络安全性,以所设用户必须为最小的权限和最少的服务,类型设置为“受限制用户”。如上图的AAA用户。
在默认的情况下,xp新建帐户是没有密码的,上面说过,默认情况下xp是不允许网络用户通过没有密码的帐户访问的。所以,我们必须给刚刚添加的AAA用户填上密码。
添加用户也可以这样进行:打开 控制面板,“管理工具”,“计算机管理”,“系统工具”,“本地用户和组”,“用户”,在右边的窗口,按右键新建用户,如下图:
如果你希望网络用户通过此帐户访问系统而不需要密码,需要更改xp的安全策略:
打开控制面板,“管理工具”,“本地安全策略”,展开“本地策略-安全选项”,双击“账户: 使用空白密码的本地账户只允许进行控制台登录”,并停用它,然后确定。如下图:
注意:在Home版的Windows XP里是没有组策略的。
第三、设置共享
做好以上的设置就可以设置共享了,点击一个文件夹,属性,共享选项卡,嘿嘿,跟刚刚的不同了吧,下面还多了个权限的按钮。如下图:
点击权限,默认是EVERYONE,也就是每个用户都有完全控制的权限如下图:
其中(BIGEASTAAA)表示计算机bigeast中的AAA用户。
如果我们设置AAA有只读权限,只需要在“读取”那里打勾就行了。
权限的说明:
读取权限允许用户:浏览或执行文件夹中的文件。
更改权限允许用户:改变文件内容或删除文件。
完全控制权限允许用户:完全访问共享文件夹。
如果设置不同的帐户不同权限,重新一次以上步骤。
特别注意,打开了高级共享,系统的所有分区都被默认共享出来,必须把它改回来。
如果网络用户的 *** 作系统是NT/2000/XP的话,访问时候提示用户密码,只要输入刚刚设置好的帐户密码就可以正常访问了。否则无法访问。
如何设置IIS网站目录的访问权限如何设置IIS网站目录的访问权限_百度经验:
:jingyanbaidu/article/67508eb42673ad9a1ce4fa
打开网站根目录的“属性”窗体,然后切换到“安全”选项框
在“安全”选项框中,有该目录权限的组或用户,以及对应的权限。
点击“编辑”按钮,在打开的“权限”对话框中,再点击“添加”按钮,依次添加匿名用户IUSR和和用户组IIS_IUSRS
对于网站的根目录,通常只需要赋予“读取”,“列出文件夹内容”和“读取和执行”的权限。
如果在网站下某些文件或目录需要写入权限,则单独在这些文件或目录的IUSR和IIS_USRS权限上添加“写入”
通过这种方式完成网站的访问权限设置,之前碰到的问题就迎刃而解。
打开网站根目录的“属性”窗体,然后切换到“安全”选项框 在“安全”选项框中,有该目录权限的组或用户,以及对应的权限。 点击“编辑”按钮,在打开的“权限”对话框中,再点击“添加”按钮,依次添加匿名用户IUSR和和用户组IIS_IUSRS 对于网站的根目录
你点击网址 然后点击右键 权限 然后在安全里面设置啊 比如iisuser adminsitrator 等等
如何控制AIX中目录的ftp访问权限当我们想要将一个目录设置为ftp只读或ftp只写时,我们可以借助/etc/ftpaessctl文件来实现这种权限控制。
一、设置一个目录为ftp只读
1 编辑/etc/ftpaessctl,加入如下一行:
readonly: /test
2 ftp连接服务器进行读取传输,成功
HA_node2@/> ftp 172161813
Connected to 172161813
220 DumpServer FTP server (Version 42 Fri Feb 3 22:13:23 CST 2006) ready
Name (172161813:root): root
331 Password required for root
Password:
230-Last unsuessful login: Tue May 13 08:44:37 2008 on /dev/pts/1 from 918150139
230-Last login: Tue May 13 10:45:06 2008 on ftp from ::ffff:918150246
230 User root logged in
ftp> cd /test
250 CWD mand suessful
ftp> lcd /test
Local directory now /test
ftp> dir
200 PORT mand suessful
150 Opening data connection for /bin/ls
total 29472
-rw-r--r-- 1 root system 7539356 Apr 24 19:42 tracer
-rw-rw-rw- 1 root system 880640 Apr 24 19:41 traceraw
-rw-rw-rw- 1 root system 1158232 Apr 24 19:41 traceraw-0
-rw-rw-rw- 1 root system 1059928 Apr 24 19:41 traceraw-2
-rw-rw-rw- 1 root system 1050952 Apr 24 19:41 traceraw-3
-rw-rw-rw- 1 root system 1195440 Apr 24 19:41 traceraw-4
-rw-rw-rw- 1 root system 2196288 Apr 24 19:41 traceraw-5
226 Transfer plete
ftp> bin
200 Type set to I
ftp> get traceraw
200 PORT mand suessful
150 Opening data connection for traceraw (880640 bytes)
226 Transfer plete
880852 bytes received in 008342 seconds (1031e+04 Kbytes/s)
local: traceraw remote: traceraw
3进行写入传输,则遭遇报错
ftp> bin
200 Type set to I
ftp> put traceraw-1
200 PORT mand suessful
550 Write aess denied
二、设置一个目录为ftp只写
1 编辑/etc/ftpaessctl,加入如下一行:
writeonly: /test
2 ftp连接服务器进行读取传输,则遭遇报错
HA_node2@/> ftp 172161813
Connected to 172161813
220 DumpServer FTP server (Version 42 Fri Feb 3 22:13:23 CST 2006) ready
Name (172161813:root): root
331 Password required for root
Password:
230-Last unsuessful login: Tue May 13 08:44:37 2008 on /dev/pts/1 from 918150139
230-Last login: Tue May 13 15:45:37 2008 on ftp from ::ffff:172161811
230 User root logged in
ftp> cd /test
250 CWD mand suessful
ftp> lcd /test
Local directory now /test
ftp> dir
200 PORT mand suessful
150 Opening data connection for /bin/ls
total 29472
-rw-r--r-- 1 root system 7539356 Apr 24 19:42 tracer
-rw-rw-rw- 1 root system 880640 Apr 24 19:41 traceraw
-rw-rw-rw- 1 root system 1158232 Apr 24 19:41 traceraw-0
-rw-rw-rw- 1 root system 1059928 Apr 24 19:41 traceraw-2
-rw-rw-rw- 1 root system 1050952 Apr 24 19:41 traceraw-3
-rw-rw-rw- 1 root system 1195440 Apr 24 19:41 traceraw-4
-rw-rw-rw- 1 root system 2196288 Apr 24 19:41 traceraw-5
226 Transfer plete
ftp> bin
200 Type set to I
ftp> get traceraw-2
200 PORT mand suessful
550 Read aess denied
3进行写入传输,成功
ftp> bin
200 Type set to I
ftp> put traceraw-1
200 PORT mand suessful
150 Opening data connection for traceraw-1
226 Transfer plete
880640 bytes sent in 007938 seconds (1083e+04 Kbytes/s)
local: traceraw-1 remote: traceraw-1
ftp> dir
200 PORT mand suessful
150 Opening data connection for /bin/ls
total 31192
-rw-r--r-- 1 root system 7539356 Apr 24 19:42 tracer
-rw-rw-rw- 1 root system 880640 Apr 24 19:41 traceraw
-rw-rw-rw- 1 root system 1158232 Apr 24 19:41 traceraw-0
-rw-r----- 1 root system 880640 May 13 15:53 traceraw-1
-rw-rw-rw- 1 root system 1059928 Apr 24 19:41 traceraw-2
-rw-rw-rw- 1 root system 1050952 Apr 24 19:41 traceraw-3
-rw-rw-rw- 1 root system 1195440 Apr 24 19:41 traceraw-4
-rw-rw-rw- 1 root system 2196288 Apr 24 19:41 traceraw-5
226 Transfer plete
在XP下如何设置NTFS下一个目录的访问权限?xp只能给用户具体设置访问权限,没有用密码访问的方式,设置权限只要在文件夹上点右键选“属性”在打开的对话框中点“安全”其下可以添加删除用户对文件的权限(当然要另外建一个用户),如果楼主硬要对用户用密码访问的话,可以用“文件夹加密大师”等软件实现。
linux /tmp 目录访问权限不是,/tmp目录的权限位是drwxrwxrwt,/tmp目录对所有用户的读写权限仅限于目录本身,而不是/tmp目录下的目录或者文件。
你举的例子中,1txt上传后的所属应该是 root root,sam用户能否复制或者删除1txt取决于1txt的权限位。
android手机获取自带存储路径和sd卡存储路径的方式是:
调用EnvironmentgetExternalStorageDirectory,返回的存储目录并不是系统内置的SD卡目录。
1、手机将eMC存储挂载到/mnt/external_sd、/mnt/sdcard2等节点,而将外置的SD卡挂载到EnvironmentgetExternalStorgeDirectory这个结点。
2、而另一部分手机直接将eMMC存储挂载在EnvironmentgetExternalStorageDirectory这个节点,而将真正的外置SD卡挂载到/mnt/external_sd、/mnt/sdcard2等节点。调用EnvironmentgetExternalStorgeDirectory,则返回内置的SD的路径。
扩展资料:Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android10)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。
Android的系统架构和其 *** 作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
参考资料:
这个简单。你的递归程序有问题,其实你把file传进去更好,你获取SD卡根路径的写法也不正确,有的不是mnt开头,应该用这个方法获取EnvironmentgetExternalStorageDirectory()。程序改成这样
List list = new ArrayList();getMuiscInfo(path,list);
public void getMuiscInfo(String path,List list){
File dir = new File(path);
File file[] = dirlistFiles();
for(File f : file){
if(fisDirectory()){
//getMuiscInfo(fgetabsolutepath(),list);
}else{
if(fgetName()endsWith("mp3")){
listadd(f);
}
}
}
}
下面这个例子是安卓无忧里的sd卡浏览器,你可以参考一下,可以点击源码,查看源码,百度一下安卓无忧就行。如果您觉得好用就帮着宣传一下,也可以关注我的微博,下面是截图:
// 根目录权限不允许,放到/data/packeg_dir下或SD卡中
package comexampledemo;
File dir = EnvironmentgetDataDirectory(); //获取data目录
//EnvironmentgetExternalStorageDirectory(); // 获取SD卡目录
File outFile=new File(dir,"/data/comexampledemo/texttxt"); //只能在自己的程序包里建立文件,这是权限问题
以上就是关于android开发怎样获得文件夹中的所有文件全部的内容,包括:android开发怎样获得文件夹中的所有文件、安卓系统根目录下的文件列表、android软件 根目录 data/data的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)