zoukankan      html  css  js  c++  java
  • [唠叨两句]一个关于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,谢谢。



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



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

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


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

  • 相关阅读:
    jsfl 常用自定义方法
    jsfl 常用方法
    Java 跨平台原理
    JDK、JRE 和 JVM 的区别
    win10 中安装 JDK8 以及环境配置
    JDK 14 都已经发布了,Java 8 依然是我的最爱
    DOS 命令大全用法详解
    《Java程序设计基础》 第4章手记
    堆和栈的区别
    CC#JavaPython 基本数据类型比较
  • 原文地址:https://www.cnblogs.com/08shiyan/p/1856910.html
Copyright © 2011-2022 走看看