| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 356 人关注过本帖
标题:习惯在路径加上Application.StartupPath
收藏  订阅  推荐  打印 
018
Rank: 1
等级:新手上路
帖子:11
积分:234
注册:2008-1-8
习惯在路径加上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);就不会错了。
搜索更多相关主题的帖子: StartupPath  路径  
2008-8-25 21:24
seiya027848
Rank: 2
等级:注册会员
帖子:50
积分:752
注册:2008-6-27

恩,这个东西很重要
2008-8-26 09:09
coolszy
Rank: 3Rank: 3
来自:南京财经大学
等级:中级会员
帖子:194
积分:2064
注册:2007-11-3

是啊
我也遇到过

[url=http://hi.baidu.com/_coolszy]我的Blog[/url]
[url=http://www.ssqyt.com.cn]play[/url]
2008-8-26 11:12
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.059832 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved