本帖最后由 zms2100 于 2013-5-9 21:25 编辑
题外话: 纪念泡论坛第四天,也希望此贴是纪念自己技术分达到25分的贴,O(∩_∩)O~…………..(这是最近自己对毕老师说的对文件遍历操作的深究,本来想写的但懒,不过刚才论坛里有人也遇到这样的问题,就贴出来普及下,呵呵)
回到题上来,技术贴: 系统文件权限了解与修改(除非电脑大神,否则只建议了解或修改普通文件作为尝试,否则如果你的电脑有冒烟或蓝屏均与本贴以及我无关啊,O(∩_∩)O~)
1、为什么要了解系统文件权限? 答: 在实际应用中,有时候Java程序需要访问或遍历系统中的文件夹或文件(下面以文件夹统称,通常保护是以文件夹作为整体),而在遍历系统中的文件夹时通过都会遇到空指针异常(NullPointerException) 如上图,但这是为什么呢? 因为Window系统等为了防范一般电脑使用者不小心删除系统文件等(也是为了阻止一些恶意程序破坏电脑程序,所以就提供了对于系统中的文件的访问、修改等的权限设置功能。 因此当Java程序访问到系统中受保护的文件时就会返回null值(通常Java程序是用File类中的list类型的方法来获取文件等的路径名称),而遍历该File[]数组时就会抛出空指针异常。 说了这么多,你怎么能不继续往下了解怎么修改这个权限呢,O(∩_∩)O~
———————————————电脑文件的权限与状态———————————————— 2、了解文件的权限以及状态 : 将电脑文件简单分成两种权限类型、两种状态(当然权限下面会提到,一堆的权限功能)。
A、完全控制权限: 电脑系统中一般文件的默认系统权限,Java可操作的文件是建立在这种权限上,此权限分为两种状态 : 非隐藏状态 : 默认的显示状态,此权限下的这种状态文件,Java程序可对其进行IO流的读取、写入操作(包括复写功能)。 隐藏状态 : 即隐藏文件/文件夹,隐藏状态的文件,Java的IO流技术只能对其进行读取和追加数据操作(即不能复写该文件)。 【除了正在操作中的文件,只要是这种权限的文件都能够被删除,包括隐藏状态】
B、保护(限制)权限: 系统中可对文件进行不同类型的权限保护(限制),禁止访问、禁止删除、禁止添加数据等。 在系统盘(C盘等)中会有不少系统文件夹被设置为此类权限,即拒绝访问(列出文件、读取数据)该文件等,所以当访问、遍历该文件夹时,File类的list()等方法会返回null值,那么在遍历返回的File[]数组时就会发生空指针异常。 【贴一张权限图,不过是以win7系统为例,xp可能有少许出入,至少界面肯定不同,O(∩_∩)O~】
只挑几个来说,当然大家也可以自己去尝试,不过建议,新建个文件夹( 没用嘛, 弄坏了也不会冒烟, 呵呵) (当该权限被定义为拒绝时) 1、列出文件/读取数据 : 结果就是你将无法打开那个文件夹,Java程序访问该文件遍历回来的结果就是null,导致空指针异常。
(里面有些功能是要同时打钩的) 2、删除子文件夹及文件、删除: 定义为拒绝时,在系统中你将无法对其进行删除操作,会提示需要什么其他管理员权限(改回去就好了,呵呵)
3、创建等的选项点成拒绝,就是字面意思,不能够在文件夹里创建文件夹等。 4、其他的就不多说了,可以适当的尝试,不过了解下就可以了,O(∩_∩)O~ 【注: 如果要模拟操作且不懂在哪里找到修改文件权限的看下面第3条,不喜好的可以跳过】
————————————————修改文件权限———————————————————— 3、操作步骤 : A 、右键指定文件或文件夹,点击属性,会出现下面的文件框: 点击“安全”,出现下面窗体 :
【点击“高级”】 点击“更改权限”后会出现类似的窗体,如下 : 在这一步就必须要选择系统管理员的选项(如黑框),在有的时候部分文件不能找到Administration(当然前提是你的系统管理员名称是这个,另外不要跟Administrations 相混淆,一个是有s 的,而我们可操作的是没有s 的Administration 。) 【在这里就可以点击“编辑”键,进入到文件权限的修改位置,但是在修改出来后点击确定是电脑会提醒你是否确认修改等……….如果你自己确定修改,那么就点确认】
注:如果没有该选项,那么就要点击“添加”按钮,然后在下面提示的指定位置填写本机的系统管理员名称,之后点下检查名称,如果它有帮你补充就是对的,之后点确定。
好了,剩下的就是不断的修改,重复测试,这就不讲了,O(∩_∩)O~ (最后还是提醒不要轻易去碰系统盘等中的保护文件,呵呵)
—————————————————解决方案——————————————————— (太多字,论坛竟然有字数限制,这可以我辛苦打的啊,解决方案见下方)
|