【问题标题】:File.Exists function not working in Windows8 or higherFile.Exists 函数在 Windows8 或更高版本中不起作用
【发布时间】:2017-05-29 11:01:23
【问题描述】:
  1. 即使文件存在,文件存在函数也总是返回 false。
  2. 我试图复制粘贴在运行中的文件路径n并尝试手动打开,即使文件物理存在也失败(Win7工作正常,Win8或更高版本问题)
  3. 尝试了几种来自互联网的解决方案。

 string FilePath = @"D:\Test\alllllllllthe Data.docx";
    如果(文件。存在(文件路径))
    {
        字符串 FileContent = File.ReadAllText(FilePath);

    }

【问题讨论】:

  • 你确定路径正确吗,我运行的是 Windows 10 1703 并且刚刚测试了这个。工作得很好。
  • @JasonH - 按照以下步骤重现它。 1. 在 D/E 驱动器中创建文件夹 例如:D: 2. 在其下创建文件夹 例如:D:\Test 3. 创建/放置文件 例如:D:\Test\myFile.docx 4. 右键单击​​文件>>属性> > 安全选项卡 >> 对象名称 >> 复制整个文件路径 5. 按 Win+R 粘贴该路径 >> 输入
  • 我尝试了 serval 时间,它的 8/10 倍很容易重现。

标签: .net file windows-8 windows-10-desktop


【解决方案1】:

说实话,我不明白是什么改变导致了这种情况,因为你是对的:

string filePath = @"D:\Folder\somefile.txt";
File.Exists(filePath) == TRUE // this is not happening

我更进一步并做到了:

try
{
    var filePath = Path.GetFullPath("E:\\Folder\\somefile.txt");
    File.OpenRead(filePath);
}
catch (Exception ex)
{ }

抛出的异常是:
NotSupportedException: The given path's format is not supported.

这确实有效,所以试试吧:

var filePath = Path.GetFullPath("D:\\Folder\\somefile.txt");
File.Exists(filePath) == TRUE // this does work

或者,您也可以使用它:

var path = @"D:\Folder";
var fileName = "somefile.txt";
var filePath = Path.Combine(path, fileName);
File.Exists(filePath) == TRUE // this does work

【讨论】:

  • 基本上,文件操作给我同样的错误给定路径的格式不受支持
  • 还添加了一个替代选项
  • 我解决了这个问题,还有多余的字符吗?在不可见的路径开始中。即使我粘贴在 Win+r 或记事本中。额外的字符被隐藏了,所以我想出了解决方案。私有字符串 TrimInvalidChars(string FileFullPath) { int index = FileFullPath.IndexOf(":"); if (index > 0) { FileFullPath = FileFullPath.Substring(index - 1); } 返回文件全路径; }
  • 是否只有将文件路径复制粘贴到源代码中才会出现问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 2018-09-29
  • 1970-01-01
相关资源
最近更新 更多