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”
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
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óacảm ơn bạn,
Trả lờiXóathank bạn nhiều
Trả lờiXóaNhư 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óaBạ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óaNhận xét này đã bị tác giả xóa.
Trả lờiXóa