使用 Stream Reader 动态打开文件

File open dynamic using Stream Reader

我需要一些帮助。我正在创建一个方法,该方法获取带有文件名的字符串并读取项目路径上的文件 json,反序列化一个对象。

但是在文件打开时,我想将路径与文件名连接起来,但它不起作用。

public static ObjectXpto ObjectXptoType(string filename)
{
        ObjectXpto objectXpto = new ObjectXpto();

        using (StreamReader file = File.OpenText(@"..\project\Data$"{filename}".json")) 
        {
            JsonSerializer serializer = new JsonSerializer();
            objectXpto = (ObjectXpto)serializer.Deserialize(file, typeof(ObjectXpto));
        }

        return objectXpto;
}

您可以在字符串前使用 $ 和 @ 符号来在字符串中键入变量名。

using (StreamReader file = File.OpenText($@"..\project\Data\{filename}.json")) 

我想你想要这个:

    public static ObjectXpto ObjectXptoType(string filename)
    {
        ObjectXpto objectXpto = new ObjectXpto();

        using (StreamReader file = File.OpenText($"..\project\Data\{filename}.json")) 
        {
            JsonSerializer serializer = new JsonSerializer();
            objectXpto = (ObjectXpto)serializer.Deserialize(file, typeof(ObjectXpto));
        }
        return objectXpto;

    }
}

安全的方法是使用Path.Combine or Path.Join :

var fullPath=Path.Combine(@"..\project\Data",$"{fileName}.json");

这会处理文件夹字符串中的所有尾部反斜杠