为什么当文件明显存在时我会收到 FileNotFoundException?

问题描述 投票:0回答:1

我有一段 C# 代码,我尝试在其中列出目录中的一些文件。列出文件时,我收到 FileNotFoundException (尚未捕获),但我不明白为什么......

    try
    {
        String[] files = Directory.GetFiles(directory);
        FileInfo fi = new FileInfo(file);
        long size = fi.Length;
    }
    catch (UnauthorizedAccessException)
    {
        Console.WriteLine("Cannot enumerate files from " + directory);
    }

目录的值为

D:\_temporary_files\2024_temporary_files_temporary_file-2024-07-21_-_author_unknown_length_unknown_size_unknown\2024_temporary_files_temporary_file-2024-07-21_-_author_unknown_length_unknown_size_unknown

给我 FileNotFoundException 的文件是

D:\_temporary_files\2024_temporary_files_temporary_file-2024-07-21_-_author_unknown_length_unknown_size_unknown\2024_temporary_files_temporary_file-2024-07-21_-_author_unknown_length_unknown_size_unknown\2024_temporary_files_temporary_file-2024-07-21_-_17-11-00-0001.dat

我尝试从根 D: 开始递归地列出目录中的文件,但当我点击上面的文件/目录时,出现 FileNotFoundException。

我怀疑它可能与路径/文件名的长度有关,但我可以在 Windows (10)、记事本、其他编辑器、其他文件浏览器等中完美地查看、列出、编辑文件。

既然所有其他软件工具处理这个文件似乎都没有问题,为什么我在 C# 中遇到这个异常?

谢谢!

编辑:在我的匆忙中,我遗漏了生成 FileNotFoundException 的代码片段 - 获取文件的长度会引发错误。

c# directory filenotfoundexception
1个回答
0
投票

最大路径长度限制中所述:

在 Windows API [...] 中,路径的最大长度为 MAX_PATH,定义为 260 个字符。

包含文件名的路径长度为 270 个字符。

© www.soinside.com 2019 - 2024. All rights reserved.