当前位置: 代码迷 >> C# >> filepath为什么不能是小弟我指定的
  详细解决方案

filepath为什么不能是小弟我指定的

热度:119   发布时间:2016-05-05 02:43:31.0
filepath为什么不能是我指定的?
按钮1是打开一个文件,按钮2是读按钮1打开的那个文件,并解析字符串重新生成一个新的文件
现在的filepath,我创建的。直接就去创建新的了,怎么不能指定到打开的ofd.FileName,去打开的那个文件读呢?
在红色部分我直接用ofd.FileName,提示我是非法的路径。
 
 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "(*.*)|*.*";
            ofd.RestoreDirectory = true;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                textBox6.Text = ofd.FileName;
                FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);

                try
                {
                    ofd.OpenFile();

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
                finally
                {
                    fs.Close();
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {

            if (!(Directory.Exists(@"D:\temp")))
            {
                Directory.CreateDirectory(@"D:\temp");
            }
            string cbz = "CQD";
            string s = dateTimePicker2.Value.ToString("yyyyMM");
            string filePath = @"D:\temp\" + textBox3.Text + "" + s + "" + textBox2.Text + "." + cbz + ".txt";
            if (File.Exists(filePath))
            {
                labelResult.ForeColor = Color.Red;
                labelResult.Text = "当前文件已经存在!";
                return;
            }

            OpenFileDialog ofd = new OpenFileDialog();
            FileStream fs = new FileStream(filePath, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
             StreamReader sr = new StreamReader(fs);
       try
                {
                    string line = sr.ReadLine();
                    while (line != null)
                    {
                        string[] bit = line.Split(',');
                        string a = bit[2].ToString();   //时间
                        string b = bit[3].ToString();   //时间指示符
                        string c = bit[4].ToString();   //纬度
                        string d = bit[5].ToString();   //南北半球标示
                        string e1 = bit[6].ToString();   //经度
                        string f = bit[7].ToString();    //东西半球标示
                        string g = bit[8].ToString();    //航速
                        string h = bit[9].ToString();    //航向
                        string i = bit[21].ToString();   //真风速
                        string j = bit[22].ToString();   //真风向
                        string k = bit[26].ToString();   //气压
                        string l = bit[28].ToString();   //气温
                        string m = bit[30].ToString();   //湿度
                        listBox1.Text = a + b + c;
                    }
                    sw.Write(listBox1.Text);
                    sw.Flush();
                    labelResult.ForeColor = Color.Green;
                    labelResult.Text = "写入数据完成!";
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
                finally
                {
                    sw.Close();
                    fs.Close();
                }
  

------解决思路----------------------
你两个按钮的功能写的感觉有点问题。按钮1,选择文件,文件选择之后直接保存文件名就好了
private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "(*.*)
------解决思路----------------------
*.*";
            ofd.RestoreDirectory = true;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                textBox6.Text = ofd.FileName;

            }
        }
按钮2楼主的代码完全没看懂
------解决思路----------------------
FileStream fs = new FileStream(filePath, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
StreamReader sr = new StreamReader(fs);

你的打开模式是创建,然后你又读它,又写它,这是闹哪出呢,一个刚创建的文件能有什么内容供你读取?