使用Stream Reader动态打开文件

问题描述 投票:0回答:1

我需要一些帮助。我正在创建一个方法,该方法获取带有文件名的字符串,并在项目路径上读取文件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;
}
c# json json.net filereader streamreader
1个回答
0
投票

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

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

0
投票

我认为您想要这个:

    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;

    }
}

0
投票

通常建议为此使用内置的Path方法:

var filename = "test";
var path = @"..\project\Data\";
var result = Path.ChangeExtension(Path.Combine(path, filename), "json");

.. \ project \ Data \ test.json

© www.soinside.com 2019 - 2024. All rights reserved.