Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Hỏi cách dùng nhiều extionsions để filter tập tin

1059 Lượt xem 2 Bình luận 0 Lượt báo xấu
Em muốn hỏi để filter với nhiều extensions thì làm sao?
m.n giúp em với
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

Một vài cách dùng nhiều extensions để filter tập tin.
Tình huống chúng ta sẽ có một thư mục Files trong ổ D: chứa danh sách 6 tập tin với nhiều loại extension như bên dưới:
D:\Files\file1.txt
D:\Files\file2.html
D:\Files\file3.xlsx
D:\Files\file4.docx
D:\Files\file5.csv
D:\Files\file6.pdf

Bây giờ chúng ta sẽ đi sâu vào từng cách cụ thể như sau:
Cách 1:
public void GetFilesByFilter1()
{
    txtInfo.Text = "Before filter" + Environment.NewLine;
    string[] files = Directory.GetFiles(@"D:\Files");
    foreach (string file in files)
    {
        txtInfo.Text += file + Environment.NewLine;
    }
 
    /* Using LinQ to filter by extention */
    string[] fileExtention = { ".html", ".txt", ".csv" };
    txtInfo.Text += "After filter" + Environment.NewLine;
    var filteredFiles = files.Where(f => fileExtention.Any(e => f.EndsWith(e)));
    foreach (var file in filteredFiles)
    {
        txtInfo.Text += file + Environment.NewLine;
    }
}

=> Kết quả thu được như sau:
Before filter
D:\Files\file1.txt
D:\Files\file2.html
D:\Files\file3.xlsx
D:\Files\file4.docx
D:\Files\file5.csv
D:\Files\file6.pdf
After filter
D:\Files\file1.txt
D:\Files\file2.html
D:\Files\file5.csv

Cách 2:
public void GetFilesByFilter2()
{
    IEnumerable filteredFiles = new List();
    string[] filters = { "*.html", "*.xlsx", "*.xml" };
    foreach (string filter in filters)
    {
        filteredFiles = filteredFiles.Concat(Directory.GetFiles(@"D:\Files", filter).AsEnumerable());
    }
 
    /* Get Files by filter list */
    foreach (var file in filteredFiles)
    {
        txtInfo.Text += file + Environment.NewLine;
    }
}

=> Kết quả thu được như sau:
D:\Files\file2.html
D:\Files\file3.xlsx

Cách 3:
public void GetFilesByFilter3()
{
    string extension1 = ".html";
    string extension2 = ".txt";
    var filteredFiles = Directory.GetFiles(@"D:\Files").Where(f=>f.Contains(extension1) || f.Contains(extension2));
    foreach (var file in filteredFiles)
    {
        txtInfo.Text += file + Environment.NewLine;
    }
}

=> Kết quả thu được như sau:
D:\Files\file1.txt
D:\Files\file2.html

Cách 4:
public void GetFilesByFilter4()
{
    string filters = "*.docx|*.xlsx|*.csv";
    var filteredFiles = filters.Split('|').SelectMany(filter => Directory.GetFiles(@"D:\Files", filter, SearchOption.AllDirectories)).ToList();
    foreach (var file in filteredFiles)
    {
        txtInfo.Text += file + Environment.NewLine;
    }
}

=> Kết quả thu được như sau:
D:\Files\file4.docx
D:\Files\file3.xlsx
D:\Files\file5.csv

(còn tiếp)
0 Lượt thích

Và đây là code hoàn chỉnh:
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 WinFormsApp
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
 
            txtInfo.Text += "The first way: " + Environment.NewLine;
            GetFilesByFilter1();
            txtInfo.Text += Environment.NewLine + "The second way: " + Environment.NewLine;
            GetFilesByFilter2();
            txtInfo.Text += Environment.NewLine + "The third way: " + Environment.NewLine;
            GetFilesByFilter3();
            txtInfo.Text += Environment.NewLine + "The fourth way: " + Environment.NewLine;
            GetFilesByFilter4();
        }
 
        public void GetFilesByFilter1()
        {
            txtInfo.Text = "Before filter" + Environment.NewLine;
            string[] files = Directory.GetFiles(@"D:\Files");
            foreach (string file in files)
            {
                txtInfo.Text += file + Environment.NewLine;
            }
 
            /* Using LinQ to filter by extention */
            string[] fileExtention = { ".html", ".txt", ".csv" };
            txtInfo.Text += "After filter" + Environment.NewLine;
            var filteredFiles = files.Where(f => fileExtention.Any(e => f.EndsWith(e)));
            foreach (var file in filteredFiles)
            {
                txtInfo.Text += file + Environment.NewLine;
            }
        }
 
        public void GetFilesByFilter2()
        {
            IEnumerable filteredFiles = new List();
            string[] filters = { "*.html", "*.xlsx", "*.xml" };
            foreach (string filter in filters)
            {
                filteredFiles = filteredFiles.Concat(Directory.GetFiles(@"D:\Files", filter).AsEnumerable());
            }
 
            /* Get Files by filter list */
            foreach (var file in filteredFiles)
            {
                txtInfo.Text += file + Environment.NewLine;
            }
 
        }
 
        public void GetFilesByFilter3()
        {
            string extension1 = ".html";
            string extension2 = ".txt";
            var filteredFiles = Directory.GetFiles(@"D:\Files").Where(f=>f.Contains(extension1) || f.Contains(extension2));
            foreach (var file in filteredFiles)
            {
                txtInfo.Text += file + Environment.NewLine;
            }
        }
 
        public void GetFilesByFilter4()
        {
            string filters = "*.docx|*.xlsx|*.csv";
            var filteredFiles = filters.Split('|').SelectMany(filter => Directory.GetFiles(@"D:\Files", filter, SearchOption.AllDirectories)).ToList();
            foreach (var file in filteredFiles)
            {
                txtInfo.Text += file + Environment.NewLine;
            }
        }
    }
}

=> Chạy chương trình:
Before filter
D:\Files\file1.txt
D:\Files\file2.html
D:\Files\file3.xlsx
D:\Files\file4.docx
D:\Files\file5.csv
D:\Files\file6.pdf
After filter
D:\Files\file1.txt
D:\Files\file2.html
D:\Files\file5.csv
 
The second way:
D:\Files\file2.html
D:\Files\file3.xlsx
 
The third way:
D:\Files\file1.txt
D:\Files\file2.html
 
The fourth way:
D:\Files\file4.docx
D:\Files\file3.xlsx
D:\Files\file5.csv
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng