Đọc file text bằng C#

vào lúc 09:30
Sự phát minh ra file text là một phát minh quan trọng trong lĩnh vực công nghệ thông tin. File text có thể lưu trữ thông tin dạng số, văn bản... Nó là dữ liệu dạng chuẩn trong đa số các phần mềm. Vậy để lấy thông tin trong file text thì phải làm thế nào trong lập trình, và với ngôn ngữ C# ta có thể dễ dàng đọc 1 file đầu vào dạng text và khai thác thông tin trong file text này.

Hàm đọc file nằm trong thư viện System.IO nên trong chương trình ta khai báo ở đầu sử dụng thư viện này using System.IO;
Hàm được sử dụng chủ yếu trong đọc file là File.ReadAllLines("Đường dẫn",Encoding.), hàm này có tham số truyền vào là đường dẫn của file text, và ngoài ra có tùy chọn là đọc kết quả ra mã tùy bạn thiết lập (Default, ASCII, Unicode, UTF8...), nếu để trống tùy chọn này thì nó sẽ tự động hiểu ngầm là đọc theo mã Unicode.
Ví dụ:
Ta có 1 file text có cấu trúc như sau và các cột được phân tách bằng dấu tab và để trong cùng thư mục chương trình. Ta cần đọc file này và hiển thị phần Tên trước và sau đó hiển thị tổng các số bằng hộp thoại MessageBox
File mẫu (docfile.txt):
                        Tên1    1
                        Tên2    2
                        Tên3    3
Giải quyết:
Ta thiết kế 1 Form gồm 1 Button để chọn file text vào, 1 Button đọc file, 1 textbox lưu đường dẫn của file.
Code:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//Khai báo thư viện đọc file
using System.IO;

namespace DocFile
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Button chọn file text
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog F = new OpenFileDialog();
            F.Title = "Mở tệp danh sách điểm tọa độ";
            F.Filter = "Text file (txt,dat)|*.txt;*.dat|All file (*.*)|*.*";
            if (F.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = Path.GetFullPath(F.FileName);

            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Mặc định chương trình chạy sẽ lấy file mẫu docfile.txt có trong chương trình để vào textbox
            if (File.Exists(Path.GetDirectoryName(Application.ExecutablePath) + "\\docfile.txt") == true)
                textBox1.Text = Path.GetDirectoryName(Application.ExecutablePath) + "\\docfile.txt";
        }
        //Button đọc file
        private void button_docfile_Click(object sender, EventArgs e)
        {
            //Kiểm tra xem file đầu vào có tồn tại không
            if (File.Exists(textBox1.Text) == true)
            {
                //Đọc file dân cư cần báo cáo
                string[] words;
                words = File.ReadAllLines(textBox1.Text, Encoding.Default);//Encoding.Default: đọc theo mã mặc định của file text
                string ten = "";
                int so = 0;
                //Chạy từng dòng trong file text
                for (int i = 0; i < words.Length; i++)
                {
                    string[] str = words[i].Split('\t');
                    try
                    {
                        if (str.Length >= 2)
                        {
                            ten += str[0] + "\n";
                            so += Convert.ToInt32(str[1]);
                        }
                    }
                    catch
                    {
                        ten += "Lỗi dòng:" + (i + 1).ToString() + ";" + "\n";
                    }
                }
                //Hiển thị kết quả bằng hộp thoại
                MessageBox.Show("Tên gồm:"+"\n"+ten+"Tổng số:"+so.ToString(),"Kết quả đọc file");
            }
            else
            {
                MessageBox.Show("File text vào không tồn tại","Lỗi chọn file text");
            }
        }
    }
}

Kết quả hiển thị khi bấm vào Button “Đọc File”


Mã nguồn chương trình bạn tải về đây.
Hãy like nếu bài viết có ích →
Kết bạn với gisgpsrs trên Facebook để nhận bài viết mới nóng hổi

6 nhận xét:

  1. anh ơi có cách nào cho để 1s thì textbox chỉ hiển thị 1 dòng của file text không ạ?

    Trả lờiXóa
  2. Như cách trên là biết trước cấu trúc,giả sử các chữ ta cần lấy có độ dài khác nhau sẽ giải quyết ra sao vậy bạn?

    Trả lờiXóa
    Trả lời
    1. Bạn có thể xử lý bất kỳ chuỗi nào hoàn toàn đọc được file đó theo từng dòng của file text. Ở đây ví dụ là đọc từng dòng và tách từng chữ phân tách bởi dấu tab(\t) bạn hãy đọc kỹ đi nhé.

      Xóa
  3. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa