Streamreader problems

本文关键字:problems Streamreader | 更新日期: 2023-09-27 18:19:00

我是一个真正的c#新手,试图根据我的一个朋友在他的一个应用程序中使用的简短代码编写一个小的XML替换程序。

我对这行有问题:

StreamReader sr = new StreamReader(textBox1.Text);

我得到一个错误:"空路径名是不合法的。"为什么这行不通呢?

代码是:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ReplaceMe
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        StreamReader sr = new StreamReader(textBox1.Text);
        StreamWriter sw = new StreamWriter(textBox1.Text.Replace(".", "_new."));
        string cur = "";
        do
        {
            cur = sr.ReadLine();
            cur = cur.Replace(textBox2.Text, textBox3.Text);
            sw.WriteLine(cur);
        }
        while (!sr.EndOfStream);
        sw.Close();
        sr.Close();
        MessageBox.Show("Finished, the new file is in the same directory as the old one");
    }
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            this.textBox1.Text = openFileDialog1.FileName;
        }
    }

}
}

提前感谢:)

Streamreader problems

这是因为您的textBox1在创建StreamReader时不包含文本。您在button1_Click中设置了textBox1文本,因此您必须在该方法中创建StreamReader

你应该确保文件存在之前,你试图访问它,似乎你提供一个空字符串作为文件名。

尝试仅在以下情况下访问文件:

if (File.Exists(textBox1.Text))
{
  //Your Code...
}

textbox1的值为null或空。此外,如果希望操作xml,请查看System.Xml名称空间的对象。

这是因为你在StreamReader构造函数中设置了一个空字符串。

我建议您在读取文件之前做一个简单的验证。

:

 string fileName = textBox1.Text; 
    if(String.IsNullOrEmpty(fileName)) {
       //textbox is empty 
    } else if(File.Exists(fileName)) {
      //file not exists
   } else {
     // read it 
     StreamReader sr = new StreamReader(fileName);
    //..
  }

注意:这不是操作xml文件的正确方法。查看XML文档获取更多信息