Можете ли вы получить путь к файлу из объекта StreamReader? - PullRequest
1 голос
/ 13 марта 2019

Можно ли получить путь, который использовался в конструкторе StreamReader, из объекта StreamReader?

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

1 Ответ

4 голосов
/ 13 марта 2019

StreamReader предоставляет поток, из которого он читает, через свойство BaseStream.Если поток чтения равен FileStream, вы можете использовать его свойство Name, чтобы получить путь к файлу.

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

Примечание: я переименовал переменную, чтобы избежать возможной путаницы, так какэто читатель, который имеет поток.

В этом надуманном примере очевидно, что это FileStream, но тест типа необходим, если у вас есть метод, который принимает StreamReader.

Тем не менее, вы заставляете абстракцию вытекать, делая это.Если вам нужно знать имя файла, вам нужно явно указать имя файла или FileStream экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...