首页 > 解决方案 > 为什么我的应用程序试图读取错误文件夹中的对象?

问题描述

我正在使用 Visual Studio 来完成我的第一个完整应用程序版本,这是一个简单的 WPF GUI,用于配置本地保存的 JSON 对象,以及一个在后台运行的控制台应用程序,使用来自该对象的数据来监视网站。我将每个项目发布到一个测试文件夹(我们会说 Publish/),每个应用程序清单现在都驻留在该文件夹中,以及一个包含每个项目的另一个子文件夹的“应用程序文件”文件夹。

我让应用程序运行得很好 - 问题是配置文件保存到一个文件夹中的几个级别到 C:\Users\username\AppData\Local\Apps\2.0\ 并且控制台应用程序正在尝试从一个完全单独的文件夹。两个项目都使用 GetCurrentDirectory() 作为文件路径进行读写。有没有办法解决这个问题?

检索 JSON 对象的代码

try
        {
            //Confirms file exists
            if (File.Exists(Directory.GetCurrentDirectory().ToString() + filePath))
            {
                //Initialize json variable to a string, then deserialize it into an instance of RCDetails
                var json = File.ReadAllText(Directory.GetCurrentDirectory().ToString() + filePath);
                RCDetails parsedDetails = JsonConvert.DeserializeObject<RCDetails>(json);

                //Return deserialized JSON
                return parsedDetails;
            }
            else return null;

以及编写json对象的代码

public void WriteToFile(RCDetails rcd)
    {
        //Serialize input instance of RCDetails class
        string JSONresult = JsonConvert.SerializeObject(rcd, Formatting.Indented);

        //Remove old JSON object
        if (File.Exists(Directory.GetCurrentDirectory().ToString() + jsonFilePath))
            File.Delete(Directory.GetCurrentDirectory().ToString() + jsonFilePath);

        //Create new JSON object with updated details
        File.WriteAllText(Directory.GetCurrentDirectory().ToString() + jsonFilePath, JSONresult);
    }

发布项目的具体步骤:

我最终找到了解决方案(如果这是一个糟糕的计划,请随时告诉我)。我只是将它放入两个应用程序中。

string s = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\IntendedFolder";
        if (!Directory.Exists(s))
            Directory.CreateDirectory(s);
        Directory.SetCurrentDirectory(s);

标签: c#visual-studio-2017directory-structure

解决方案


推荐阅读