zoukankan      html  css  js  c++  java
  • 绝对路径与相对路径的区别【2】release和debug这两种情况下对本地文件操作不一致的问题

    总感觉题目起的有点别扭,但是不明白这是不是应该归因于这两种编译模式的区别,所以只能用这个长而晦涩的题目了。
    我们在做一些应用程序时,经常会用XML文件存放一些程序的配置信息,甚或一些少量数据信息,而且有时候要提供给最终用户编辑这些信息的功能,用户所作的编辑也应该被永久保存在这个XML文件中。以C#的Windows窗体程序为例。
        在我程序中,开始用debug模式生成项目的可执行文件,而要读写的XML文件保存在和bin\debug\目录下,程序中用
    doc.Load("SourceFile.xml");    获得XmlDocument对象doc,然后是对这个doc对象进行相应编辑操作,当编辑完成后,用doc.Save("SourceFile.xml");保存xml文件,这一切任何问题都没有,下次再启动生成的可执行文件并加载xml文件时,可以看到xml文件已经是被更新的了。
        然后再用release模式生成可执行文件,其余操作和debug模式下完全相同,同样还是doc.Load("SourceFile.xml");  doc.Save("SourceFile.xml");两个语句,结果却大相径庭,第二次启动可执行程序并加载xml文件时,SourceFile.xml并没有发生任何变化,而且在我的桌面上也就是“C:\Documents and Settings\HaoXiangShan\桌面”目录下生成了一个临时文件,这个文件保存的才是用户的更改结果。
        经过一番搜索和琢磨,感觉应该是文件的相对路径写法不对,或者说从一个方面也反应了release和debug的一个区别(没搞清楚原理,嘿嘿),在文章http://hi.baidu.com/dj2487/blog/item/41d50a9517e0ca0b7af48016.html中看到相对路径的写法,拿来试一下,

    doc.Load("SourceFile.xml"); 

     doc.Save("SourceFile.xml");

    改成

    doc.Load(AppDomain.CurrentDomain.BaseDirectory+"SourceFile.xml"); 

    doc.Save(AppDomain.CurrentDomain.BaseDirectory+"SourceFile.xml");  

     结果问题就解决了,在debug和release下得到的结果完全一致。

  • 相关阅读:
    轻松搭建Redis缓存高可用集群
    Redis集群主从配置
    启动Redis Cluster
    MyISAM 和 InnoDB 索引的区别
    数据库面试
    如何定位php程序访问慢
    Socket技术详解
    NGINX快速入门
    nginx 并发数问题思考:worker_connections,worker_processes与 max clients
    php-fpm运行原理
  • 原文地址:https://www.cnblogs.com/280850911/p/2219603.html
Copyright © 2011-2022 走看看