从C#中的文本文件中读取

时间:2011-11-02 12:39:37

标签: c# c#-4.0

我有以下程序将(输出)信息发送到文本文件,但现在我想从文本文件中读取(输入)。任何建议将不胜感激。我已经评论了一些“我认为”我需要做的事情;但我不确定如何继续。

using System.Windows.Forms;
using System.IO;

namespace Input_Output
{
    public partial class Grades : Form
    {
        private StreamWriter output;

        private StreamReader input;


        public Grades()
        {
            InitializeComponent();
        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void btnCreate_Click(object sender, EventArgs e)
        {
            btnEnter.Visible = true;
            btnClose.Visible = true;
            txtFirst.Visible = true;
            txtLast.Visible = true;
            lblFirst.Visible = true;
            lblLast.Visible = true;
            listBox1.Visible = true;
            lblStatus.Visible = true;
            lblGrade.Visible = true;
            lblCourse.Visible = true;
            cmbID.Visible = true;
            lblID.Visible = true;
            txtCourse.Visible = true;
            txtGrade.Visible = true;
            lblStatus.Visible = true;

            DialogResult result;
            string fileName;
            using (SaveFileDialog chooser = new SaveFileDialog())
            {
                result = chooser.ShowDialog();
                fileName = chooser.FileName;
            }
            output = new StreamWriter(fileName);
            btnCreate.Enabled = false;
            txtFirst.Visible = true;
            txtLast.Visible = true;
            lblFirst.Visible = true;
            lblLast.Visible = true;
            btnEnter.Visible = true;
            btnClose.Visible = true;
        }


        private void btnClose_Click(object sender, EventArgs e)
        {
            //Close button pushes information from the listbox in to the text file

            output.Close();
            lblStatus.ForeColor = Color.Red;
            lblStatus.Text = "Output File";
            btnCreate.Enabled = true;
            listBox1.Items.Clear();
            cmbID.Text = "";
        }

        private void btnEnter_Click(object sender, EventArgs e)
        {
            // Enter button sends information to the list box, a Message Box prompts user to check for accuracy.  
            //Close button pushes information to the Text file.
            string last = "";
            string first = "";
            string course = "";
            string grade = "";

            if (txtFirst.Text != "" && txtLast.Text != "" && txtCourse.Text != "")
            {
                last = txtFirst.Text;
                first = txtLast.Text;
                course = txtCourse.Text;
                grade = txtGrade.Text;
                output.WriteLine (last + "\t"+ "\t" + first + ":"+ "\t" + cmbID.SelectedItem + "_" + course + "_" + grade );

                listBox1.Items.Add(txtLast.Text + "," + txtFirst.Text + ":" + cmbID.SelectedItem + "-" + txtCourse.Text + "-" + txtGrade.Text);
                lblStatus.ForeColor = Color.Navy;
                lblStatus.Text = "Entry Saved";
                txtFirst.Text = "";
                txtLast.Text = "";
                txtCourse.Text = "";
                txtGrade.Text = "";
                txtFirst.Focus();
            }
            else
            {     
                lblStatus.ForeColor = Color.Red;
                lblStatus.Text = "Empty text box or boxes";
            }
            MessageBox.Show("Please verify that the information is correct before proceeding");
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void Grades_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult result;
            string fileName;
            using (OpenFileDialog chooser = new OpenFileDialog())
            {
                result = chooser.ShowDialog();
                fileName = chooser.FileName;
            }
            //while loop?
            //if variable is null, it's the end of the record
            //variable= !null 
            //txt read int variable TxtFile.Text += Rec + "\r\n";   while rec !=null;
        }
    }
}

8 个答案:

答案 0 :(得分:52)

要一次读取一行文本文件,您可以这样做:

using System.IO;

using (var reader = new StreamReader(fileName))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // Do stuff with your line here, it will be called for each 
        // line of text in your file.
    }
}

还有其他方法。例如,如果文件不是太大而您只想将所有内容读取为单个字符串,则可以使用File.ReadAllText()

myTextBox.Text = File.ReadAllText(fileName);

答案 1 :(得分:16)

这只是一行代码:

string content = System.IO.File.ReadAllText(@"C:\textfile.txt");

答案 2 :(得分:5)

试试这个:

if(result == DialogResult.OK && fileName != null)
{
    try
    {
        var fileText=File.ReadAllText(fileName);
    }
    catch(Exception ex)
    {
        //Handle exception here
    }
}

它会将所选文件中的所有数据读入fileText变量。

答案 3 :(得分:0)

使用如下代码中的Split()



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"C:\temp\test.txt";
        static void Main(string[] args)
        {
            StreamReader reader = new StreamReader(FILENAME);
            string inputLine = "";
            List<List<int>> data = new List<List<int>>();
            while ((inputLine = reader.ReadLine()) != null)
            {
                string[] inputArray = inputLine.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                if (inputArray.Count() > 0)
                {
                    List<int> numbers = inputArray.Select(x => int.Parse(x)).ToList();
                    data.Add(numbers);
                }
            }
           
        }
        
    }
}
​
&#13;
&#13;
&#13;

答案 4 :(得分:0)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace part_B_19
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                StreamReader sr = new StreamReader(@"C:\Users\Acer\Documents\Visual Studio 2012\Projects\combobox.txt");
                string line = sr.ReadLine();

                while (line != null)
                {
                    comboBox1.Items.Add(line);
                    line = sr.ReadLine();
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


        }
    }
}

答案 5 :(得分:0)

示例程序演示C#中的FILE i / o

class Items
{
  public int itemID { get; set; }
  public string itemName { get; set; }
  public int itemNo { get; set; }
  public string pkgdate { get; set; }
}

class Program
{
  private static string connectionString = "...";

  static void Main(string[] args)
  {
    string streadpath = @"I:\itemdata.txt";
    string stwritepath = @"I:\itemdata1.txt";
    string stcopypath = @"I:\itemdata2.txt";

    List<Items> li_all = new List<Items>();
    List<Items> li_db = new List<Items>();
    List<Items> li_valid = new List<Items>();
    List<Items> li_invalid = new List<Items>();

    li_all = stread_file(streadpath);
    li_invalid = validate(li_all);
    li_db = retrievefromDB();
    bool x = stwrite_invalid(li_db, stwritepath);
    bool y = stcopy_file(streadpath, stcopypath);
  }

  static List<Items> stread_file(string stpath)
  {
    List<Items> stli = new List<Items>();
    using (StreamReader SR = new StreamReader(stpath))
    {
      string line = "";
      while ((line = SR.ReadLine()) != null)
      {
        string[] linevalues = line.Split(',');
        Items obj = new Items();
        obj.itemID = int.Parse(linevalues[0]);
        obj.itemName = linevalues[1];
        obj.itemNo = int.Parse(linevalues[2]);
        obj.pkgdate = linevalues[3];
        stli.Add(obj);
      }
    }
    return stli;
  }

  static List<Items> validate(List<Items> stli)
  {
    List<Items> li_valid = new List<Items>();
    List<Items> li_invalid = new List<Items>();
    DateTime parsed;
    foreach (Items stit in stli)
    {
      if(DateTime.TryParseExact(stit.pkgdate, "MM/dd/yyyy",
      CultureInfo.InvariantCulture,
      DateTimeStyles.None, out parsed))
      {
        li_valid.Add(stit);
      }
      else
      {
        li_invalid.Add(stit);
      }
    }
    InsertDataToDb(li_valid);
    return li_invalid;
  }

  static bool stwrite_invalid(List<Items> stli,string stpath)
  {
    using (StreamWriter SW = new StreamWriter(stpath))
    {
      foreach(Items stit in stli)
      {
        SW.WriteLine(stit.itemID + "," + stit.itemName + "," + stit.itemNo + "," + stit.pkgdate);
      }
    }
    return true;
  }

  static bool stcopy_file(string stsourcepath, string stdestinationpath)
  {
    File.Copy(stsourcepath, stdestinationpath);
    return true;
  }

  static void InsertDataToDb(List<Items> stli)
  {
    var records = stli;
    using (SqlConnection con = new SqlConnection(connectionString))
    {
      StringBuilder nonQuery = new StringBuilder();
      foreach (var item in records)
      {
        nonQuery.AppendFormat("INSERT INTO dbo.Smartphone VALUES ({0}, '{1}', {2}, '{3}');",
        item.itemID,
        item.itemName,
        item.itemNo,
        item.pkgdate);
      }
      SqlCommand cmd = new SqlCommand(nonQuery.ToString(),con);
      con.Open();
      cmd.ExecuteNonQuery();
      con.Close();
    }
  }

  static List<Items> retrievefromDB()
  {
    List<Items> stli = new List<Items>();
    DataTable dt = new DataTable();
    SqlConnection con = new SqlConnection(connectionString);
    con.Open();
    SqlCommand cmd = new SqlCommand("select * from dbo.Smartphone", con);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);
    con.Close();
    if (dt.Rows.Count > 0)
    {
      for (int i = 0; i < dt.Rows.Count; i++)
      {
        Items obj = new Items();
        obj.itemID = (int)dt.Rows[i]["ID"];
        obj.itemName = dt.Rows[i]["Name"].ToString();
        obj.itemNo = (int)dt.Rows[i]["Num"];
        obj.pkgdate = dt.Rows[i]["RDate"].ToString();
        stli.Add(obj);
      }
    }
    return stli;
  }
}

答案 6 :(得分:0)

namespace CDKatalog
{
    public partial class KorisnickoUputstvo : System.Web.UI.Page
    {
        string[] izvodjac = new string[20];
        string[] nazivAlbuma = new string[20];
        string[] zanr = new string[20];
        string[] godinaIzdavanja = new string[20];
        string[] izdavackaKuca = new string[20];
        string[] slikaOmota = new string[20];

        protected void Page_Load(object sender, EventArgs e)
        {
            for (int i = 1990; i <= 2019; i++)
            {
                DropDownList2.Items.Add(i.ToString());
            }

            StreamReader sr = File.OpenText(Server.MapPath(@"\textFajl\katalog.txt"));
            string sadrzaj = sr.ReadToEnd();

            int brojac = 1;
            int j = 0;

            for (int i = 0; i < sadrzaj.Length; i++)
            {
                if (sadrzaj[i] == '^') { j++; brojac++; }
                else if (sadrzaj[i] == '|')
                {
                    brojac++;
                }
                else if (brojac % 6 == 1)
                {
                    izvodjac[j] = izvodjac[j] + sadrzaj[i];
                }
                else if (brojac % 6 == 2)
                {
                    nazivAlbuma[j] = nazivAlbuma[j] + sadrzaj[i];
                }
                else if (brojac % 6 == 3)
                {
                    zanr[j] = zanr[j] + sadrzaj[i];
                }
                else if (brojac % 6 == 4)
                {
                    godinaIzdavanja[j] = godinaIzdavanja[j] + sadrzaj[i];
                }
                else if (brojac % 6 == 5)
                {
                    izdavackaKuca[j] = izdavackaKuca[j] + sadrzaj[i];
                }
                else if (brojac % 6 == 0)
                {
                    slikaOmota[j] = slikaOmota[j] + sadrzaj[i];
                }
            }

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            
            DataTable dt = new DataTable();
            dt.Clear();
          
            dt.Columns.Add("Izvodjac", typeof(string));
            dt.Columns.Add("Naziv Albuma", typeof(string));
            dt.Columns.Add("Zanr", typeof(string));
            dt.Columns.Add("Godina Izdavanja", typeof(string));
            dt.Columns.Add("Izdavacka Kuca", typeof(string));

    
                string pomoc = "";
                for (int i = 1; i < 7; i++)//OVDE TREBA MENJATI BROJ
                {
                   for (int c = 0; c < TextBox1.Text.Length; c++)
                    {
                        if (TextBox1.Text[c] == izvodjac[i][c + 2])
                        {
                            pomoc = pomoc + TextBox1.Text[c];
                        }
                        else {
                            pomoc = "";
                            break;
                        }
                       
                    }
                   if (pomoc != "")
                   {
                       
                       dt.Rows.Add(izvodjac[i], nazivAlbuma[i], zanr[i], godinaIzdavanja[i], izdavackaKuca[i]);
                   }
                }
                Label1.Text = nazivAlbuma[1][1].ToString();
              
                GridView1.DataSource = dt;
                GridView1.DataBind();          
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Clear();
            
            dt.Columns.Add("Izvodjac", typeof(string));
            dt.Columns.Add("Naziv Albuma", typeof(string));
            dt.Columns.Add("Zanr", typeof(string));
            dt.Columns.Add("Godina Izdavanja", typeof(string));
            dt.Columns.Add("Izdavacka Kuca", typeof(string));

            string pomoc = "";
            for (int i = 1; i < 7; i++)
            {
                for (int c = 0; c < TextBox2.Text.Length; c++)
                {
                    if (TextBox2.Text[c] == nazivAlbuma[i][c])
                    {
                        pomoc = pomoc + TextBox2.Text[c];
                    }
                    else
                    {
                        pomoc = "";
                        break;
                    }

                }
                if (pomoc != "")
                    dt.Rows.Add(izvodjac[i], nazivAlbuma[i], zanr[i], godinaIzdavanja[i], izdavackaKuca[i]);
            }

            GridView1.DataSource = dt;
            GridView1.DataBind();      
        }

        protected void Button5_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Clear();
           
            dt.Columns.Add("Izvodjac", typeof(string));
            dt.Columns.Add("Naziv Albuma", typeof(string));
            dt.Columns.Add("Zanr", typeof(string));
            dt.Columns.Add("GodinaIzdavanja", typeof(string));
            dt.Columns.Add("Izdavacka Kuca", typeof(string));

            string pomoc = "";
            for (int i = 1; i < 7; i++)
            {
                for (int c = 0; c < TextBox3.Text.Length; c++)
                {
                    if (TextBox3.Text[c] == izdavackaKuca[i][c])
                    {
                        pomoc = pomoc + TextBox3.Text[c];
                    }
                    else
                    {
                        pomoc = "";
                        break;
                    }

                }
                if (pomoc != "")
                    dt.Rows.Add(izvodjac[i], nazivAlbuma[i], zanr[i], godinaIzdavanja[i], izdavackaKuca[i]);
            }

            GridView1.DataSource = dt;
            GridView1.DataBind(); 
        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Clear();
          
            dt.Columns.Add("Izvodjac", typeof(string));
            dt.Columns.Add("Naziv Albuma", typeof(string));
            dt.Columns.Add("Zanr", typeof(string));
            dt.Columns.Add("Godina Izdavanja", typeof(string));
            dt.Columns.Add("Izdavacka Kuca", typeof(string));

            for (int i = 0; i < 7; i++)
            {
                if (DropDownList1.SelectedValue == zanr[i]) {
                    dt.Rows.Add(izvodjac[i], nazivAlbuma[i], zanr[i], godinaIzdavanja[i], izdavackaKuca[i]);
                }
            }
            GridView1.DataSource = dt;
            GridView1.DataBind(); 
        }

        protected void Button4_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Clear();
          
            dt.Columns.Add("Izvodjac", typeof(string));
            dt.Columns.Add("NazivAlbuma", typeof(string));
            dt.Columns.Add("Zanr", typeof(string));
            dt.Columns.Add("Godina Izdavanja", typeof(string));
            dt.Columns.Add("Izdavacka Kuca", typeof(string));

            for (int i = 0; i < 7; i++)
            {
                if (DropDownList2.SelectedValue == godinaIzdavanja[i])
                {
                    dt.Rows.Add(izvodjac[i], nazivAlbuma[i], zanr[i], godinaIzdavanja[i], izdavackaKuca[i]);
                }
            }
            GridView1.DataSource = dt;
            GridView1.DataBind(); 
        }
    }
}

答案 7 :(得分:-2)

检查此代码:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim myStream As Stream = Nothing
    Dim openFileDialog1 As New OpenFileDialog()

    'openFileDialog1.InitialDirectory = "c:\"
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    openFileDialog1.FilterIndex = 1
    openFileDialog1.RestoreDirectory = True

    If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
        Try
            myStream = openFileDialog1.OpenFile()
            If (myStream IsNot Nothing) Then
                dataFile = openFileDialog1.FileName
                Label1.Text = openFileDialog1.SafeFileName

                Dim myReader As New StreamReader(dataFile)
                Dim line As String
                line = myReader.ReadLine()
                While Not (line Is Nothing)
                    Dim str() As String = Split(line, ControlChars.Tab)
                    ListView1.Items.Add(New ListViewItem(str))
                    line = myReader.ReadLine()
                End While

                myReader.Close()
            End If
        Catch Ex As Exception
            MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
        Finally
            ' Check this again, since we need to make sure we didn't throw an exception on open.
            If (myStream IsNot Nothing) Then
                myStream.Close()
            End If
        End Try
    End If
End Sub