c# - File.Exists() 对 Program Files 下的某些文件返回 false
问题描述
我认为这是由于某些权限问题,但似乎并非如此。该文件对“用户”具有“读取和执行、读取”权限,对“管理员”和“系统”具有“完全控制”权限。File.Exists()
退货还有其他原因false
吗?
PS:我认为代码不重要,所以我没有输入代码,但如果这是规则,这里是代码的文本版本。
static void Main(string[] args)
{
var app = @"C:\Program Files(x86)\VideoLAN\VLC\vlc.exe";
var psi = new ProcessStartInfo();
psi.FileName = Path.GetFileName(app);
psi.WorkingDirectory = Path.GetDirectoryName(app);
Process.Start(psi);
}
无论如何,在 Visual Studio 中粘贴路径似乎有一种奇怪的行为。如果我在文件资源管理器中使用“复制为路径”并将其粘贴到一个空字符串中,VS 会删除 和 之间的Files
空格(x86)
。
解决方案
在您的文件系统上,和之间有一个空格。您用于获取文件的字符串中没有它,因此应将其更改为:Files
(x86)
var app = @"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe";
// ^
// need this
就您的陈述而言:
无论如何,在 Visual Studio 中粘贴路径似乎有一种奇怪的行为。如果我在文件资源管理器中使用“复制为路径”并将其粘贴到一个空字符串中,VS 会删除 和 之间的
Files
空格(x86)
。
这几乎可以肯定归结为自动格式化,它是在粘贴时完成的(尽管您可以禁用它,或用于CTRL+Z备份,因为它似乎是先粘贴然后格式化)。
由于您粘贴了一个"quoted thing"
内引号以结束""quoted thing""
,因此该quoted thing
位现在位于引号外,因此会受到自动格式化。
如果您复制了不带引号的文件名,或者复制了带引号的文件名但粘贴到了未引用的区域,我怀疑它会未经修改(作为带引号的字符串)被放入。
推荐阅读
- android - Firebase ML 套件无法准确识别语言(英语或其他)
- python - Python中的多处理和多线程
- ios - 由于“原始错误:xcodebuild failed with code 65”,无法启动 WebDriverAgent
- c++ - C++ 二叉搜索树的段错误
- html - 为什么 2 选择箭头出现在 Asp 列表框中
- python - .json - Pandas-DataFrame 中的文件:“NoneType”对象没有属性“键”
- javascript - Vuex 状态未使用 v-if 和 v-else 显示空购物车消息
- python - 如何用指定的步骤挑选矩阵的列
- reactjs - 当我更改 Formik React js 中自动清除的另一个表单元素自动完成值时
- java - 如何在 Android Studio 中添加 Empty Activity?