CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

请问当一个文件夹的安全属性中“写入”的属性改为“拒绝”,如何能判断出来!!急!!

楼主fengjyken(反恐精英)2004-09-03 20:09:33 在 .NET技术 / C# 提问

DirectoryInfo   di   =   new   DirectoryInfo("C:\\Log");  
   
  当Log这个文件夹点击右键后,在“属性”中--〉安全性页面中,把最后那个“写入”改为“拒绝”,怎么判断出来?  
   
  谢谢!! 问题点数:100、回复次数:16Top

1 楼fengjyken(反恐精英)回复于 2004-09-03 20:25:35 得分 0

upTop

2 楼hxhbluestar(贺星河)回复于 2004-09-03 21:35:00 得分 10

使用捕捉异常的方法应该可以判断出来  
   
  当文家夹不能写入,而你又执行了写入操作时,肯定会引发一个异常  
   
  使用  
  try  
  {  
        //写入操作  
  }  
  catch(Exception   ex)  
  {  
        throw   new   Exception("文件夹不能写入");  
  }Top

3 楼fengjyken(反恐精英)回复于 2004-09-03 21:59:16 得分 0

楼上的大哥,你的方法我试过。  
   
  try  
  {  
          DirectoryInfo   di   =   new   DirectoryInfo("C:\\Log");  
          FileSystemInfo[]   s   =   di.GetFileSystemInfos();  
   
          if(!File.Exists("C:\\Log"   +   "\\"   +   "test.txt"))  
          {  
  File.Create("C:\\Log"   +   "\\"   +   "test.txt");  
  File.Delete("C:\\Log"+   "\\"   +   "test.txt");  
          }  
  }  
  catch(Exception)  
  {  
        ...  
  }  
   
  在“拒绝写入”时,走到“File.Create("C:\\Log"   +   "\\"   +   "test.txt");”这一句就错了  
   
  但是,当我恢复原状,即把“拒绝写入”去掉后,  
  走到“File.Delete("C:\\Log"+   "\\"   +   "test.txt");”这一句居然会出错。  
   
  非常不解!Top

4 楼hxhbluestar(贺星河)回复于 2004-09-04 06:35:42 得分 20

当然会出错,因为  
  DirectoryInfo   di   =   new   DirectoryInfo("C:\\Log");  
  di还保持着对   C:\Log   的使用,你只有在   销毁di后,才能对那个文件夹进行删除操作  
   
  所以如果上面的代码你注释掉   这一行,就可以通过了Top

5 楼fengjyken(反恐精英)回复于 2004-09-04 10:59:33 得分 0

楼上的高手  
   
  我现在把  
  DirectoryInfo   di   =   new   DirectoryInfo("C:\\Log");  
  FileSystemInfo[]   s   =   di.GetFileSystemInfos();  
  这两句去掉,改为:  
   
  try  
  {  
          if(!File.Exists("C:\\Log"   +   "\\"   +   "test.txt"))  
          {  
  File.Create("C:\\Log"   +   "\\"   +   "test.txt");  
  File.Delete("C:\\Log"+   "\\"   +   "test.txt");  
          }  
  }  
  catch(Exception   e)  
  {  
        ...  
  }  
   
  仍然当我把“拒绝写入”去掉后,  
  走到“File.Delete("C:\\Log"+   "\\"   +   "test.txt");”这一句出错。  
   
  出错的e.message是“进程对文件C:\Log\test.txt不能访问,这个文件被别的进程正在使用中”Top

6 楼alagong(阿拉贡)回复于 2004-09-04 11:33:19 得分 50

upTop

7 楼yingshis(英石)回复于 2004-09-04 11:36:59 得分 10

upTop

8 楼EastenChild(东方之子,天高云淡)回复于 2004-09-04 12:08:23 得分 10

原因是File.Create返回了一个FileStream句柄占有文件,所以不能够删除,使用using将其用完释放即可。  
   
  MSDN:在   using   语句中创建一个实例,确保退出   using   语句时在对象上调用   Dispose。当到达   using   语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块,都可以退出   using   语句。  
   
  代码可以这样写:  
  using(File.Create("C:\\Log"   +   "\\"   +   "test.txt"))  
  {};  
  File.Delete("C:\\Log"+   "\\"   +   "test.txt");  
   
  win2K   advanced   server   sp4,   VS   .net   2003   通过  
   
   
  判断文件夹访问错误,用异常可以。Top

9 楼fengjyken(反恐精英)回复于 2004-09-04 13:29:39 得分 0

谢谢楼上这位高手,我试过了,确实可以。  
   
  不过我还有一个疑问,难道只能通过往里写文件捕捉异常来判断文件夹的权限问题吗?  
   
  可不可以直接用他的属性等等来判断呢?  
  比方说我试了  
  FileAttributes   fa   =   File.GetAttributes("C:\\Log");  
  if((fa&FileAttributes.ReadOnly)!=0)  
  {  
        throw   new   Exception();  
  }  
  但是这种方法只能判断出“只读”属性,  
   
  能不能用类似的方法来判断权限问题呢?Top

10 楼alagong(阿拉贡)回复于 2004-09-04 14:10:58 得分 0

upTop

11 楼ET2004(外星人)回复于 2004-09-04 14:25:25 得分 0

建议:不要直接捕获   System.Exception,因为这样无论发生任何类型的异常都会被捕获,用   System.IO.IOException   或   System.Security.SecurityException   代替会好一些。  
  Top

12 楼alagong(阿拉贡)回复于 2004-09-04 14:30:11 得分 0

upTop

13 楼xrascal(横刀夺爱)回复于 2004-09-04 14:42:27 得分 0

FileInfo   fi   =   new   FileInfo("d:\\1.txt");  
  MessageBox.Show(   fi.FullName   +"   的属性是:"   +   fi.Attributes.ToString()   );Top

14 楼ET2004(外星人)回复于 2004-09-04 14:43:41 得分 0

参见   MSDN:  
  ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemsecuritypermissionsfileiopermissionclasstopic.htmTop

15 楼hxhbluestar(贺星河)回复于 2004-09-04 19:40:39 得分 0

学习   EastenChild(东方之子,天高云淡)   的方法!Top

16 楼EastenChild(东方之子,天高云淡)回复于 2004-09-11 10:50:31 得分 0

应该是这一部分讲到,大家一起学习:  
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcodeaccesssecurity.aspTop

相关问题

  • 怎样将文件夹的属性改为“受保护的操作系统文件”
  • 共享文件夹不能写入
  • 文件夹的属性没有了
  • 如何修改文件夹属性?
  • 文件夹都是只读属性
  • 怎么得到文件夹属性???
  • 如何更改2003文件夹属性
  • 怎样更改一个文件夹的属性???
  • 【得分请进!关于文件夹属性的问题!】
  • 如何得到文件夹的属性信息?

关键词

  • 属性
  • 文件夹
  • 语句
  • 文件
  • msdn
  • 写入
  • directoryinfo
  • 判断
  • 改为
  • 拒绝

得分解答快速导航

  • 帖主:fengjyken
  • hxhbluestar
  • hxhbluestar
  • alagong
  • yingshis
  • EastenChild

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo