StreamReader
предоставляет поток, из которого он читает, через свойство BaseStream
.Если поток чтения равен FileStream
, вы можете использовать его свойство Name
, чтобы получить путь к файлу.
using (StreamReader reader = new StreamReader(filePath))
{
string path = (reader.BaseStream as FileStream)?.Name;
}
Примечание: я переименовал переменную, чтобы избежать возможной путаницы, так какэто читатель, который имеет поток.
В этом надуманном примере очевидно, что это FileStream
, но тест типа необходим, если у вас есть метод, который принимает StreamReader
.
Тем не менее, вы заставляете абстракцию вытекать, делая это.Если вам нужно знать имя файла, вам нужно явно указать имя файла или FileStream
экземпляр.