【发布时间】:2019-01-17 15:40:39
【问题描述】:
我创建了一个 .NetCore 控制台应用程序,在该应用程序中尝试使用其绝对路径检查文件是否存在,但遇到问题,即使文件存在,我也总是得到错误响应。尽管我将绝对路径作为参数传递给 API,但它始终作为当前工作目录的前缀,因此路径被评估为不存在。
我在 Windows 10 桌面上运行此代码,并且该应用程序是使用 .NetCore 2.1 创建的。我尝试了各种不同的方法来评估文件的存在,例如 FileInfo 类实例和 File.Exists 静态方法。到目前为止,他们都失败了。我已诊断出问题,但找不到解决方法。
using System;
using System.IO;
namespace FileAccess
{
class Program
{
static void Main(string[] args)
{
FileInfo fileInfo = new FileInfo(@"D:\ScriptData\test.zip");
Console.WriteLine($"Full Name: {fileInfo.FullName}");
Console.WriteLine($"FileInfo.Exists: {fileInfo.Exists}");
Console.Write($"File.Exists with @: {File.Exists(@"D:\ScriptData\test.zip")}")
Console.ReadLine();
}
}
}
代码的输出是:
Full Name: D:\Work\Samples\FileAccess\FileAccess\bin\Debug\netcoreapp2.1\?D:\ScriptData\test.zip
False
False
即使传递的是绝对路径,它也会将当前工作目录作为我传递的路径的前缀。我已经检查了对文件的访问权限,一切都很好,但对于这两种情况,我仍然得到错误的响应。
【问题讨论】:
-
@Sk83r1l4m4 我尝试了您的建议,但仍然无法正常工作。但即使它有效也无助于我的情况,因为我必须将路径作为命令行参数传递。我分享的是一个示例代码。我已经检查了许可,这不是问题。
-
赞成是因为您做了正确的事情来剪切和粘贴原始源代码,这揭示了字符串中不可见的 LEFT-TO-RIGHT EMBEDDING 字符的问题。荣誉。
-
WTF。我遇到过同样的问题。我再次复制了路径名,它解决了它。