总感觉题目起的有点别扭,但是不明白这是不是应该归因于这两种编译模式的区别,所以只能用这个长而晦涩的题目了。
我们在做一些应用程序时,经常会用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下得到的结果完全一致。

转载于:https://www.cnblogs.com/280850911/archive/2011/10/20/2219603.html

绝对路径与相对路径的区别【2】--release和debug这两种情况下对本地文件操作不一致的问题...相关推荐

  1. 区别于传统低效标注,两种基于自然语言解释的数据增强方法

    本文内容整理自 PaperWeekly 和 biendata 在 B 站组织的直播回顾,点击文末阅读原文即可跳转至 B 站收看本次分享完整视频录像,如需嘉宾课件,请在 PaperWeekly 公众号回 ...

  2. java : enum、创建文件和文件夹、删除文件和文件夹、获得项目绝对路径、写入数据到excel中、java代码中两种路径符号写法、读取、写入text文件...

    java : enum http://www.cnblogs.com/hyl8218/p/5088287.html 创建文件和文件夹.删除文件和文件夹 http://www.cnblogs.com/m ...

  3. edge浏览器打开html文件路径被拆分,Win10默认浏览器被强制修改为Edge的两种解决方法...

    升级win10系统后内置Edge,用户往往使用不习惯,选择IE为默认浏览器,但是安装后一段时间后Win10默认浏览器突然被强制修改为Edge,任何网页都是用Edge浏览器打开,怎么办?针对此疑问,系统 ...

  4. Linux 里有/lib和/usr/lib,这两个目录下的库文件有什么区别吗?如果没区别为什么又要分开放呢...

    有区别的. /lib里面给的是root和内核所需so或者a之类的库文件,而/usr/lib是普通用户能够使用的. Linux的程序有两种模式,这个你应该知道,是用户模式和内核模式,和这个也是有关系的, ...

  5. java多线程区别_Java中实现多线程的两种方式之间的区别

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  6. 【转】Linux 里有/lib和/usr/lib,这两个目录下的库文件有什么区别吗?如果没区别为什么又要分开放呢

    有区别的. /lib里面给的是root和内核所需so或者a之类的库文件,而/usr/lib是普通用户能够使用的. Linux的程序有两种模式,这个你应该知道,是用户模式和内核模式,和这个也是有关系的, ...

  7. css导航栏固定顶部两种情况,及绝对定位,相对定位,固定定位和粘性定位的特性及区别

    绝对定位,相对定位,固定定位和粘性定位的特性及区别,我整理一下放在文章最下面了,不用死记硬背,理解一下就ok,需要的话可以看看. 当导航栏头部没有别的模块时,想要滑动过程中导航栏一直在顶部,有两种写法 ...

  8. IP地址和物理地址的区别,为什么要用这两种地址

    MAC地址也叫物理地址.硬件地址或链路地址,由网络设备制造商生产时写在硬件内部.IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的.MAC地址的长度为48位 ...

  9. Vue——计算属性(计算属性简介、计算属性和方法的区别:(面试)、关于计算属性 函数什么情况下调用、案例)

    目录 计算属性(面试) 1.计算属性简介 2.计算属性和方法的区别:(面试) 3.关于计算属性 函数什么情况下调用​​​​​​​ 4.案例:购物车页面计算总价 计算属性(面试) 1.计算属性简介 把c ...

最新文章

  1. 有关Botton的用法(二)
  2. 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法...
  3. mysql 重装之后_mysql重装之后 复制data
  4. 北妈每日一学:ES6 之 模块化-重要!
  5. Sqlite中文排序
  6. APP引导页UI设计素材模板|轻松留下完美的第一印象
  7. IXWebHosting主机如何退款中文图解教程
  8. 华为云linux用户名,玩转华为云服务器ECS:001 如何登录并创建新用户
  9. Android WindowManagerImpl杂谈
  10. micro macro 区别和详解
  11. 文本编辑器Notepad++使用技巧
  12. 【云原生之Docker实战】使用docker部署Wiznote私人笔记系统
  13. 雷霄骅---巨星陨落
  14. 北京限行轮换时间7月5日起,北京新一轮尾号限行规定用便签提醒
  15. 【MMDetection3D】基于单目(Monocular)的3D目标检测入门实战
  16. 野火PID上位机通信移植
  17. 浙江农林大学计算机分数线,浙江农林大学各专业录取分数线
  18. 坚果pro2s android 8,坚果Pro2s和iPhone8手机对比实用评测
  19. 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问
  20. 干货:构建C/C++良好的工程结构

热门文章

  1. js 设计模式—工厂模式
  2. [译] 如何写一篇杀手级的软件工程师简历
  3. Lintcode363 Trapping Rain Water solution 题解
  4. Forrester:全球供应商在中国处于领导地位 但本土供应商却在私有云市场蒸蒸日上...
  5. [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx
  6. Leetcode 461. Hamming Distance JAVA语言
  7. ——————————————————————————————————1203————————————————————————————————...
  8. 检索COM 类工厂中CLSID 为{00024500-0000-0000-C000-000000000046}组件时失败
  9. RAD Studio XE2/XE3 官方 ISO 下载地址 (2012-09-05更新)
  10. CSS那些事笔记(一入门)