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下得到的结果完全一致。

  • 相关阅读:
    wait 和 notify 方法
    synchronized关键字
    多线程之thread、runnable的区别
    CodeForces 213 E
    hdu 3038 并查集
    zoj 3349 dp + 线段树优化
    hdu 4419 线段树 扫描线 离散化 矩形面积
    hdu 4262(线段树)
    hfut 1287
    hdu 4747 (线段树)
  • 原文地址:https://www.cnblogs.com/280850911/p/2219603.html
Copyright © 2011-2022 走看看