C# 使用流读取器动态打开文件

C# 使用流读取器动态打开文件,c#,json.net,filereader,streamreader,C#,Json.net,Filereader,Streamreader,我需要一些帮助。我正在创建一个方法,该方法获取一个带有文件名的字符串,并读取项目路径上的文件json,对对象进行反序列化 但是在打开的文件中,我想将路径与文件名连接起来,这不起作用 public static ObjectXpto ObjectXptoType(string filename) { ObjectXpto objectXpto = new ObjectXpto(); using (StreamReader file = File.OpenText(

我需要一些帮助。我正在创建一个方法,该方法获取一个带有文件名的字符串,并读取项目路径上的文件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;

    }
}
安全的方法是使用或:


这将处理文件夹字符串

File.OpenText($@..\project\Data\{filename}.json”)TBH中的任何尾部反斜杠,我将使用;不要为路径串接字符串。正如steve所说,您几乎错过了concat快捷方式$。如果要进行多行操作,您只需要@。@JohnLord
您缺少concat快捷方式$
不,它不是concat快捷方式。。。。。而且@JohnLord
@
不仅仅适用于多行,它还意味着您不必逃避反斜杠。请务必将帖子标记为已回答。谢谢@AdrianoFukuda这种情况下,我不需要使用StreamReader?@AdrianoFukuda是的,你仍然需要。您可以使用(StreamReader File=File.OpenText(fullPath))将
fullPath
传递到
文件.OpenText
。@AdrianoFukuda yes。
var fullPath=Path.Combine(@"..\project\Data",$"{fileName}.json");