扯扯OpenFileDialog和.NET的缺省目录

  这两天在写一个小程序,帮助自己做一些碎且杂的工作。程序也没什么复杂的处理,应该很简单就完成了,谁知道却牵出一档子事儿来。到底怎么回事?请听我一一道来。
   写过IO处理程序的人都知道,在VB.NET中,如果只指定了文件名,而没有指定目录,那么当读写文件时,程序从启动目录读取文件。也就是说:.NET默认以程序的启动目录为缺省目录。例如,我的程序放在C:\Test\bin\目录下,程序中有下面一段写文件的代码,方式I:

None.gif Dim  sw  As   New  StreamWriter(“abc.txt”)
None.gifsw.
WriteLine (“ABCDEFG”)
None.gifsw.Close()


   在程序运行中,StreamWriter将在C:\Test\bin\目录下创建一个名为abc.txt的文本文件。上面的代码与下面的代码是一样的,方式II:

None.gif '  用Application.StartupPath指定目录
None.gif
Dim  sw  As   New  StreamWriter(Application.StartupPath  &  “ \ abc.txt”)

   正因为如此,所以在我的小程序里,就是使用方式I。但是问题恰恰出在这里。后来,程序增加了一段代码,其中使用到了OpenFileDialog。就在增加这段代码以后,发现方式I中写abc.txt的代码失效了。每次我使用OpenFileDialog以后,再调用方式I的方法时,总是不能把内容写入C:\Test\bin\目录下的abc.txt文件中。
  经过好多次测试,这个问题依然没有解决,我甚至怀疑这是否是.NET的Bug。前面的测试我都把重点放在了:.NET以程序的启动目录为默认目录。那段代码中。最后一次测试,我转移了目标,我想会不会是写文件的代码有问题呢?带着这个疑问,我把写文件的代码由方式I变成了方式II。测试,通过!
   回过头来再看写文件的这段代码,方式II和方式I的差别在于是否明确指定了目录。如前面所言,.NET默认以程序的启动目录为缺省目录。但是在使用OpenFileDialog的情况下,缺省目录随OpenFileDialog打开的文件目录而变化。缺省目录变成了OpenFileDialog打开的文件所在的目录。如果打开了D:\My Documents\里面的文件,那么缺省目录就成了D:\My Documents\。当调用方式I的代码时,实际是在D:\My Documents\下创建并改写abc.txt文件,C:\Test\bin\abc.txt当然不会有变化。

   总结:在程序中读写文件时应明确指定文件目录,尽量不使用.NET的缺省目录。这在大型系统中尤为重要,因为大系统中往往用到OpenFileDialog。
   另外,还应该注意SaveFileDialog和FolderBrowserDialog。

转载于:https://www.cnblogs.com/zsi/archive/2005/05/10/152385.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值