我使用了一种替代代码路径,使用输入字符串而不是从文件中读取。
我需要一个空的FileInfo对象,因为我有许多实例要访问Name
,Length
和Extension
属性。
理想情况下,我正在寻找类似于
FileInfo _fileinfo = new FileInfo(File.Empty);
然而,只有一个 FileInfo
构造函数,看起来需要一个有效的文件。是否有办法创建一个空初始化的 FileInfo 对象,而不需要创建一个空的虚拟文件?
我使用了一种替代代码路径,使用输入字符串而不是从文件中读取。
我需要一个空的FileInfo对象,因为我有许多实例要访问Name
,Length
和Extension
属性。
理想情况下,我正在寻找类似于
FileInfo _fileinfo = new FileInfo(File.Empty);
然而,只有一个 FileInfo
构造函数,看起来需要一个有效的文件。是否有办法创建一个空初始化的 FileInfo 对象,而不需要创建一个空的虚拟文件?
FileInfo _fileinfo = null;
_fileinfo = new FileInfo(<string of file with path>);
然后您将拥有一个可以作为参数传递给方法的对象。在尝试获取.Name等值之前,请不要忘记检查您的对象是否为null。
if(null != _fileinfo)
{
//some code
}
正如评论中指出的那样,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
测试等。
FileInfo
并不需要一个有效的文件 -new FileInfo("H:\\HelloWorld.txt");
将不会抛出异常,但是.Exists
显然会返回 false。 - maxp