你能从StreamReader对象获得文件路径吗?

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

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

        using (StreamReader fileStream = new StreamReader(filePath))
        {
            string path = fileStream.???
        }
c# path streamreader
1个回答
4
投票

StreamReader通过BaseStream财产暴露了它正在阅读的流。如果读者的流是FileStream,您可以使用其Name属性来获取文件的路径。

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

注意:我重命名了变量以防止可能的混淆,因为它是一个有流的读者。

在这个人为的例子中,很明显它是一个FileStream,但如果你有一个采用StreamReader的方法,那么类型测试是必要的。

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

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