c# - 你能从 StreamReader 对象中获取文件路径吗?

标签 c# path streamreader

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

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

最佳答案

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

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

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

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

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

关于c# - 你能从 StreamReader 对象中获取文件路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150472/

相关文章:

c# - 我将如何在一列数据库设计中创建多个类型ID

.net - 环境变量不起作用(Windows 11)

没有 Win32 API 调用的 C# 路径省略号

c# - 使用 StreamReader 和 StreamWriter 修改文件

android - 在 Android Studio 中加载一个简单的文本文件

c# - 在 MVC4 和类库之间共享 session 的最佳方式

c# - 移植WinForms拖拽到WPF拖拽

c# - 默认字符串排序顺序

ios默认下载的pdf文件路径和位置

C# XNA - 读取 .txt 文件并创建二维数组