c#:Windows创建后立即删除文件

时间:2018-10-09 15:43:38

标签: c# xml

我正在尝试使用c#从JSON数据开始编写xml文件。 我看到一个奇怪的问题:文件一经创建即被删除。 如果我调试代码,则在使用using关闭语句之前,该文件仍然有效,在此行之后,文件将被删除。

有人可以帮助我吗?

下面是我的代码:

            string path = "c:\\temp\\";
        // Write JSON to XML file
        string json = "{\"WorkOrderId\":\"WOAA_002_FQjjjjjjjj\",\"WorkOrderName\":\"OP_AAA001\",\"InternalKey\":\"WOAA_002_FQ@iKey@OP_AAA001\",\"parameterDataList\":[{\"Description\":\"Valore PR\",\"InspectionType\":\"Numeric\",\"Value\":\"\",\"LowerLimit\":null,\"NominalValue\":null,\"UpperLimit\":null,\"UoM\":\"n/a\",\"Skill\":true,\"Sequence\":\"1\",\"ParameterValueALTDatetime\":\"\"},{\"Description\":\"Valore PR\",\"InspectionType\":\"String\",\"Value\":\"test\",\"LowerLimit\":null,\"NominalValue\":null,\"UpperLimit\":null,\"UoM\":\"n/a\",\"Skill\":true,\"Sequence\":\"2\",\"ParameterValueALTDatetime\":\"\"}]}";


        XmlDocument uiXmlDoc = JsonConvert.DeserializeXmlNode(json, "root");

        // Get data for compose filename
        string woId = "WOAA_PAOLO";
        string operation = "OP_AAA001";
        string dcId = "TK-18-0000000332";

        if (!path.EndsWith("\\")) path += "\\";

        //Compose filename
        string fileName = path + woId + "@" + operation + "@" + dcId + ".xml";


        //Save the xml and then cleanup
        XmlWriterSettings settings = new XmlWriterSettings { Indent = true };


        using (StreamWriter outStream = new StreamWriter(@fileName))
        {
            XmlWriter writer = XmlWriter.Create(outStream, settings);
            uiXmlDoc.Save(writer);

        }

2 个答案:

答案 0 :(得分:0)

我解决了这个问题,问题在于使用c:/ temp目录,如果我使用它可以工作的另一个目录,我认为这可能是安全性或权限问题。

答案 1 :(得分:-1)

我不会使用C驱动器的根目录,Windows安全性倾向于阻止用户在没有管理员凭据的情况下在此处进行写操作。使用环境变量%temp%,它将把文件放在用户的temp文件夹中。这是在C#中获取环境变量的链接

https://docs.microsoft.com/en-us/dotnet/api/system.environment.getenvironmentvariable?view=netframework-4.7.2

另一个优点是,您不必担心文件夹不存在而会导致错误。