[唠叨两句]一个关于OpenFileDialog 影响 相对路径的问题

          今天遇到一个比较怪的问题、同样的代码在XP sp2系统下与 在 Win7系统下的 得到效果竟然不一样,当然相同的代码在不同的操作系统下出现不同效果、至今已经不是第一次遇到了。

闲话没啦,看测试用的代码吧!

测试使用的窗体很简单,就一个按钮,按钮的单击事件如下:

代码
/// <summary>

/// 使用OpenFileDialog打开一个文件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btn1_Click(object sender, EventArgs e)

{

OpenFileDialog of
= new OpenFileDialog();

of.ShowDialog();



FileStream fs
= new FileStream("testPath.txt", FileMode.Create, FileAccess.Write);



byte[] buffer = Encoding.UTF8.GetBytes("使用相对路径写入文件");



fs.Write(buffer,
0, buffer.GetLength(0));



fs.Close();

fs.Dispose();

}

代码就如上这些了,下面我说一下我的操作:

一、在XP 操作系统下,使用的是.NET 4。

(1)单击按钮 、打开OpenFileDialog 选中一个文件(非debug目录下的文件) 、单击“取消”,此时 会在debug 文件夹下生成一个 名为“testPath.txt”的文件。————————————毫无疑问得到的效果与预想的是一摸一样的。

删除debug目录下的 testPath.txt 文件
在上述操作完成后 不关闭应用程序的情况下继续进行下述操作:

(2)单击按钮 、打开OpenFileDialog 选中一个文件(非debug目录下的文件) 、单击“打开”(注意此时是打开按钮),嘿嘿… 咿!? 为什么在debug目录下没有生成 名为 testPath.txt的文件呢?
那个testPath.txt去跑到那去呢? 也许你已经猜到了,对、就是在你选择的那个文件的同级目录下呢!有位大侠给出的解释是:

木鱼      

不使用当前目录即可.程序运行的时候有个当前工作目录的说法(可见于快捷方式设置中),这个工作目录不一定是程序所在目录,虽然大部分时候直接双击程序运行的时候都是相同的,但很多情况下会发生变更(比如使用了OpenFileDialog或SaveFileDialog,它们会默认打开当前工作目录并随着用户选择而更改).CurrentDirectory都是获得的当前工作目录.】

是不是很怪啊!!!嘿嘿…

删除刚刚生成的那个 testPath.txt 文件

在上述操作完成后 不关闭应用程序的情况下继续进行下述操作:
 

(3)还是单击 按钮 这次单击 “取消” 按钮, 大家说 这次 那个“testPath.txt”会在那个目录下产生呢?
呵呵… 这个答案嘛就要靠大家啦。
 

————————-————————————————换操作系统啦——————————————————

二、在Win7操作系统下,使用的也是.NET 4。

仿照在Xp操作系统下进行的操作 进行:

(4)  仿照(1)步骤,点击 “取消”按钮,也会在debug目录下生成生成 名为 “testPath.txt”文件。————和预想的一样。


删除debug目录下的 testPath.txt 文件
在上述操作完成后 不关闭应用程序的情况下继续进行下述操作:

(5) 仿照(2)步骤, 选择一个非debug 目录下的一个文件,这次点击的是“打开”按钮,这次得到的效果却与在XP操作系统得到的效果不一样,依然是在debug目录下生成的 testPath.txt文件。 

 不解,不解,不解啊!

——————————————————————好啦,测试完毕。————————————————

唉,这个问题以前怎么就没有发现呢?又长经验啦!嘿嘿…

 

至于为什么会出现上述效果,我也就不清楚啦, 望大侠指教哦…

作者:誓言

博客:http://www.cnblogs.com/08shiyan

别人写的东西无论是好还是差、至少是一番心血,如有友情传播及转载请标明出处 http://www.cnblogs.com/08shiyan,谢谢。



返回导读目录,阅读更多随笔



分割线,以下为博客签名:

软件臭虫情未了
  • 编码一分钟
  • 测试十年功


随笔如有错误或不恰当之处、为希望不误导他人,望大侠们给予批评指正。

原文地址:https://www.cnblogs.com/08shiyan/p/1856910.html