锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C#开源 / File.Exists判断失败、C# File.Exists判断文件存在失败、Win7 File.Exists判断文件存在失败
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

File.Exists判断失败

最近换台新的机器,用了些新配置,把旧机器的开发环境移植过来后,在调试时,C#的一个方法执行失败。这个方法是File.Exits,它可以判断某个文件在不在硬盘上,传入的参数是绝对路径名。因为以前对代码测试过,觉得出现这样的问题真是莫名其妙!

C# File.Exists判断文件存在失败

打开MSDN找到对Exits的说明,说有可能权限有影响,就找了如下代码进行权限的处理。

                FileIOPermission f = new
    FileIOPermission(FileIOPermissionAccess.AllAccess, sfile);
                f.Demand();

把如上代码加到方法里,问题依旧。又加如下形式:

    [FileIOPermission(SecurityAction.Demand, All = @"D:\papersystem\upfile\1.docx")]
    public partial class Form1 : Form

还是不行。

Win7 File.Exists判断文件存在失败

接着想着是Win7的权限有影响,就想办法给进程提权。

加入清单文件manifest,加上requireAdministrator,还是不行。

修改项目属性里的ClickOnce,如下图:

ClickOnce

问题依旧。没办法,就把示例代码放到旧机器上运行。旧机器上完全可以,代码判断没问题。

错误总结

在新机器环境下,我把代码里的目录修改到机械硬盘所在的目录,新机器环境下也正常了。出问题的目录在固态硬盘的分区上,可能是Win7对固态硬盘的支持不好,也有可能是固态硬盘的权限要求高,也没有具体向下分析。

项目比较紧张时,最好不要换环境,会耽误时间。这个事故是换用固态硬盘导致File.Exits判断失败,是个血的教训。

正确总结

后来仔细想到一个区别,旧机器资源管理器里显示文件名是不带扩展名,旧机器里测试的文件名正确,而新机器里测试文件名是多了个扩展名,比如1.docx在新机器里的实际文件名为1.docx.docx,正是因为扩展名问题才导致判断失败。和硬盘类型没关系。

为什么会反复,还是因为项目没有集中完成,心理假定其它模块是正确的,没有注意细节。血的教训。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内