在C#中创建一个空的FileInfo对象而不需要现有文件

9

我使用了一种替代代码路径,使用输入字符串而不是从文件中读取。

我需要一个空的FileInfo对象,因为我有许多实例要访问NameLengthExtension属性。

理想情况下,我正在寻找类似于

FileInfo _fileinfo = new FileInfo(File.Empty);

然而,只有一个 FileInfo 构造函数,看起来需要一个有效的文件。是否有办法创建一个空初始化的 FileInfo 对象,而不需要创建一个空的虚拟文件?


好吧,那不会起作用。它是不可变的,没有默认构造函数,也没有任何属性有setter。你肯定可以用自己的类解决问题。 - Hans Passant
1
FileInfo 并不需要一个有效的文件 - new FileInfo("H:\\HelloWorld.txt"); 将不会抛出异常,但是 .Exists 显然会返回 false。 - maxp
2个回答

5
我刚遇到了一个类似的问题。你觉得从以下方面入手如何:
FileInfo _fileinfo = null;

之后,您可以直接执行以下操作:
_fileinfo = new FileInfo(<string of file with path>);

然后您将拥有一个可以作为参数传递给方法的对象。在尝试获取.Name等值之前,请不要忘记检查您的对象是否为null。

if(null != _fileinfo)
{
  //some code
}

0

正如评论中指出的那样,FileInfo可以愉快地构造不存在的路径,但它们必须是有效的路径字符串(你称之为“有效文件”)。(请参见https://learn.microsoft.com/en-us/dotnet/api/system.io.fileinfo?view=net-5.0,了解什么是有效路径。)

解决方案就是简单地编写

FileInfo _fileinfo = new FileInfo(@"C:\NonExistant.txt");

而不是

FileInfo _fileinfo = new FileInfo(File.Empty);

然后你可以考虑自己的测试来判断是否正在处理“Empty”FileInfo对象,例如检查驱动器字母、扩展名、File.Exists测试等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接