使用Winforms .NET框架JsonSerializer序列化文件路径字符串,但它返回包含/debug/文件夹路径的文件路径

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

我是一个老新手,所以如果我感到困惑,我很抱歉。

我正在 .NET Framework Winforms 中创建一个音乐播放器应用程序。

我一直在尝试做的就是创建一个方法,将文件夹路径字符串序列化到我们的音乐文件夹,反序列化文件夹路径,读取将显示在文本框中的反序列化文件夹路径。

JsonString jsonstring = new JsonString
{
    defaultMediaLocation = @"C:Media\"
};

public string path = AppDomain.CurrentDomain.BaseDirectory + "MediaLocation.json";


public void SerializeJson(JsonString jsonstring, string path)
{
    var serializer = new JsonSerializer();

    using (var writer = new StreamWriter(path))
    using (var jsonWriter = new JsonTextWriter(writer))
    {   
        serializer.Serialize(jsonWriter, jsonstring.defaultMediaLocation);
        jsonWriter.Flush();
        writer.Close();
    }
}

public string ReadJson()
{
   

    char[] charsToTrim = { '"'};

    var jsonread = File.ReadAllText(path).Trim(charsToTrim);
    
    return jsonread;
}

所以最后,它正确地显示了上述文本框中显示的文件夹路径(C:Media),但每次我们尝试播放音乐时,我们都会收到一条消息: “在\Debug\Media\MediaLocation.json'中找不到路径'C:\Users\it\Source\Repos PGMusicPlayerWin2 PGMusicPlayerWin的一部分”

这很奇怪,因为它应该尝试直接从 C:\Media 播放音乐,这又正确地显示在文本框中,而不是来自调试路径。

请帮忙!

c# .net winforms .net-4.8 jsonserializer
1个回答
0
投票

如果您使用AppDomain.CurrentDomain.BaseDirectory,您将获得正在执行的应用程序的启动目录,即调试目录

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