注册 登录
编程论坛 C# 论坛

异常:用自己编写的记事本打开系统文件无法进行读取

步向巅峰 发布于 2014-06-17 17:09, 1408 次点击
想用自己编写的记事本打开系统文件,开始的获取系统文件路径都没问题,可是到读取的过程中出现了异常,求教:
程序代码:
static void Main()
        {
            string[] getArgs = Environment.GetCommandLineArgs();//获取命令行参数,经测试,打开系统文件时的文件路径在第二行
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FrmNote(getArgs));
        }

程序代码:
public FrmNote(string[] getSystemFilePath)
        {
            if (getSystemFilePath.Length > 1)//调试时命令行参数只有1行,只有当打开系统文件时命令行参数才大于1行
            {
                MessageBox.Show(getSystemFilePath[1]);
                FileStream fs = new FileStream(getSystemFilePath[1], FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
                MessageBox.Show("a");
                StreamReader sr = new StreamReader(fs);
                MessageBox.Show("b");
                tbContent.Text = sr.ReadToEnd();
                MessageBox.Show("c");
                sr.Close();
                fs.Close();
            }
            InitializeComponent();
            //ff = new FrmFind();
            
//ff.Show(this);
            
//ff.Hide();
        }

public System.Windows.Forms.TextBox tbContent;

尝试打开系统文件时出现异常:
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

发现问题出现在
tbContent.Text = sr.ReadToEnd();

却不知道怎么解决,毫无头绪
10 回复
#2
编号10162014-06-17 21:41
我也试着去执行一次,getArgs 里的路径是这个项目.exe的路径,并不是打开我记事本的路径;OpenFileDialog()这个方法里的FileName去获取你打开文件的的路径!我也只是初学者懂得不是很多,其它我看了好久也没看出什么来
#3
步向巅峰2014-06-18 17:41
刚开始是不知道怎么获取系统文件的路径,现在是获取到了正确的路径,结果到读取的地方出问题了,可是这问题也出的莫名其妙,类型什么的都是匹配的,可是就是运行不下去了,同样的代码在调试时用没问题,结果到实际运行出错。网上查了,有人说要什么要与注册表关联,可是我不知道怎么关联,也不知道为什么要关联,更不知道关联和能不能给文本框赋值有何关系
#4
编号10162014-06-18 22:21
回复 3 楼 步向巅峰
应该不是那关联问题吧!我之前也做了一个,就没有出现这问题,有时候类型匹配没错,但它不一定是对就像字符串它有很多 空格 它是字符串;你那项目有多大,小的话能不能发给我看看,也让我学习学一下
#5
步向巅峰2014-06-19 10:23
行,
只有本站会员才能查看附件,请 登录
#6
编号10162014-06-20 16:23
回复 5 楼 步向巅峰
你那项目不是可以运行嘛,至于要打开其他格式的文本我到是没事过
#7
步向巅峰2014-06-20 17:14
回复 6 楼 编号 1016
你搞错了,我不是说项目不可以运行,而是说在桌面上建一个记事本,里面输入文字,然后用自己编写的程序打开,即直接更改打开方式,而不是调试的过程中打开
#8
编号10162014-06-20 22:23
你是说像用记事本查看HTML后台代码一样,来查看一些.txt文本吗
#9
步向巅峰2014-06-21 16:34
只有本站会员才能查看附件,请 登录

打开方式里面有两个记事本,一个是系统自带的,一个是我自己编的,我自己编的打不开,我是想解决这个问题
#10
yhlvht2014-06-22 01:22
public FrmNote(string[] getSystemFilePath)
{
    InitializeComponent();//敢不敢把这句放这
    if (getSystemFilePath.Length > 1)//调试时命令行参数只有1行,只有当打开系统文件时命令行参数才大于1行
    {
        MessageBox.Show(getSystemFilePath[1]);
        FileStream fs = new FileStream(getSystemFilePath[1], FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
        MessageBox.Show("a");
        StreamReader sr = new StreamReader(fs);
        MessageBox.Show("b");
        tbContent.Text = sr.ReadToEnd();
        MessageBox.Show("c");
        sr.Close();
        fs.Close();
    }
    //InitializeComponent();
    //ff = new FrmFind();
    //ff.Show(this);
    //ff.Hide();
}
#11
步向巅峰2014-06-22 12:51
控件还没够造好怎么能调用,想破脑袋没想到问题出到这里,太感谢了
1