习惯在路径加上Application.StartupPath

今天在写程序的时候发现了一个很无奈的错误,找了2、3个钟,最后找同事,搞了1个钟,到最后才发现原来是路径的问题。

先写个简单的程序:

1、新建“windows应用程序”工程。
2、在工程目录的bin/Debug下新建一个018.txt,往里写一个行字“能读到我吗?”。

3、添加一个OpenFileDialog控件。改名为openFileDialog。

4、添加一个按钮,在按钮点击事件里添加下面代码:

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                MessageBox.Show("你选中了:" + openFileDialog.FileName);
                System.IO.StreamReader reader = new System.IO.StreamReader("018.txt", Encoding.Default);
                MessageBox.Show("018.txt内容:" + reader.ReadLine());
            }

5、运行,点击按钮,选择不是bin/Debug下的文件。 结果“System.IO.StreamReader reader = new System.IO.StreamReader("018.txt", Encoding.Default);”出现异常。如果

                System.IO.StreamReader reader = new System.IO.StreamReader("018.txt", Encoding.Default);
                MessageBox.Show("018.txt内容:" + reader.ReadLine());

放在if的前面就没问题。这是为什么呢?

其实细心一点就可以发现程序的当前目录变了才会出现异常。如果在if前加上

               MessageBox.Show("当前目录:" + Environment.CurrentDirectory.ToString());

和在if内加上

              MessageBox.Show("当前目录:" + Environment.CurrentDirectory.ToString());

在未选中文件时选中当前目录,到你选中了不是bin/Debug下的文件时,当前目录就变了。

以前老认为new System.IO.StreamReader("018.txt", Encoding.Default);就会在程序目录下查找018.txt文件,今天终于彻底明白,原来是在“当前目录”下查找,“当前目录”是可以改变的。所以习惯在路径加上Application.StartupPath表示程序目录下的×××,如new System.IO.StreamReader(Application.StartupPath+@"/018.txt", Encoding.Default);就不会错了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值