2009-08-29 48 views
14

嘿,这将是那些愚蠢的问题之一。我正试图在本地系统上找到一个文件,并且我一直在收到FileNotFoundException文件未找到例外..但它的存在

有人让我直接请:)

if(File.Exists(@"C:\logs\hw-healthways-prod_2009-08-26.tar")) 
{ 
    Console.WriteLine("Yay"); 
} 
else 
{ 
    throw new FileNotFoundException(); 
} 

试图将文件移动到相同的位置执行的应用程序,并做了以下内容:

if(File.Exists("hw-healthways-prod_2009-08-26.tar")) 

同样的事情。

然后我做了一个随机的txt文件,并停放在那里过。“me.txt”

和它的作品?所以你的文件名称是问题?

+0

如果在开始 - >运行框中键入“C:\ logs \ hw-healthways-prod_2009-08-26.tar”,会发生什么情况? – 2009-08-29 00:59:38

+0

如果尝试使用File.OpenRead(...)显式打开文件,会出现什么错误?也可能不是这种情况,但我认为如果这是一个目录,而不是一个文件,然后File.Exists将返回false – 2009-08-29 01:01:17

+0

哈哈没有找到它..但我friggen从文件的属性复制名称和位置。不知道怎么回事。 – Nick 2009-08-29 01:02:02

回答

11

试试做Directory.GetFiles(@"C:\logs")。可能有问题的文件有奇怪的字符,通过Windows资源管理器(大概是从何处读取“文件属性”的方式)解释为单向字符,而是由.NET Framework以不同的方式解释。如果文件名中包含UTF-8字符(可能是连字符?),就会发生这种情况。

+0

更改文件的名称似乎是票。我正在调查。谢谢 – Nick 2009-08-29 01:15:32

+3

+1由于这个问题困扰了我几个小时。由于我在Windows资源管理器中创建了隐藏文件扩展名的选项,因此我的文件实际上被称为“file1.html.txt”,而不是“file1.html”。 – Remotec 2013-01-26 16:50:08

0

您可能想检查您的文件权限。您的计算机可能没有该文件的权限。

+0

嗯..我不这么认为。我可以手动打开它。 – Nick 2009-08-29 01:07:58

-6

C:\ logs \ hw-healthways-prod_2009-08-26.tar应该是C:\\ logs \\ hw-healthways-prod_2009-08-26.tar。 \意味着下一个字符是一个转义字符。

+7

当字符串以@字符为前缀时不适用。 – 2009-08-29 01:18:56

7

可以是文件的名称是 “HW-Healthways调查,prod_2009-08-26 .tar.tar”,而不是 “HW-Healthways调查,prod_2009-08-26 的.tar”,我有这个问题,因为默认情况下,扩展文件隐藏在窗口上