您可以从StreamReader对象获取文件路径吗?

时间:2019-03-13 20:13:16

标签: c# path streamreader

是否可以从StreamReader对象获取StreamReader构造函数中使用的路径?

        using (StreamReader fileStream = new StreamReader(filePath))
        {
            string path = fileStream.???
        }

1 个答案:

答案 0 :(得分:4)

StreamReader通过BaseStream属性公开正在读取的流。如果读者的流是FileStream,则可以使用其Name属性来获取文件的路径。

using (StreamReader reader = new StreamReader(filePath))
{
    string path = (reader.BaseStream as FileStream)?.Name;
}

注意:我将变量重命名以防止可能的混淆,因为它是具有流的读取器。

在这个人为的示例中,很明显它是FileStream,但是如果您的方法采用StreamReader,则必须进行类型测试。

也就是说,您正在这样做导致抽象泄漏。如果您需要知道文件名,则应明确要求文件名或FileStream实例。