NEWS

Đổi tên file trong thư mục chỉ định với C#

Đổi tên file trong thư mục chỉ định với C#
Đăng bởi: TONA Cody - Lượt xem: 25258 22:13:10, 11/01/2017C#   In bài viết

Hôm nay mình xin hướng dẫn đổi tên file thành chuỗi mã hóa dạng md5 32 ký tự bằng C#. Ví dụ này sẽ đổi tên tất cả các file trong thư mục được chọn. Tùy mục đích sử dụng của các file mà mình không muốn người khác biết được quy tắc đặt tên của mình thì mình sẽ mã hóa theo dạng này.

Đầu tiên mình sẽ chọn 1 folder, sau đó lấy tất cả các file chứa trong folder đó (bao gồm cả các thư mục con), tách lấy tên và mã hóa tên theo định dạng md5 sau đó đổi tên file thành tên đã mã hóa.
Bài này mình có tham khảo bài viết của anh Cái Trí Minh https://laptrinhvb.net/bai-viet/chuyen-de-csharp/Ma-hoa-MD5-voi--Csharp-/43e4065edab328e7.html .

Bắt đầu thực hiện:
Mình sẽ tạo một solution C#, sau đó new một form như hình:

Rename-all-file-in-folder-c#-thay-doi-ten-tat-ca-cac-file-trong-thu-muc-1

Nhấn F7 và copy hàm chuyển chuỗi ký tự thành chuỗi mã hóa MD5:
 

private String md5(string txt)
        {
            String str = "";
            Byte[] buffer = System.Text.Encoding.UTF8.GetBytes(txt);
            System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
            buffer = md5.ComputeHash(buffer);
            foreach (Byte b in buffer)
            {
                str += b.ToString("X2");
            }
            return str;
        }

Code cho sự kiện click vào button Duyệt:
 

string[] path_folder ; //tạo một mảng chứa danh sách đường dẫn các file khi chọn thư mục

        private void btn_duyet_Click(object sender, EventArgs e)
        {
            path_folder =null;
            FolderBrowserDialog folder_selected = new FolderBrowserDialog(); //dùng để duyệt chọn 1 folder
            if (folder_selected.ShowDialog()==DialogResult.OK)
            {
                path_folder = Directory.GetFiles(folder_selected.SelectedPath,"*.*",SearchOption.AllDirectories); //thực hiện quét tất cả các tệp tin có trong thư mục chọn, bao gồm cả thư mục con
                txt_thumuc.Text = folder_selected.SelectedPath;
                if (path_folder.Length!=0)
                {
                    gridControl1.DataSource = path_folder;
                }
                else
                {
                    XtraMessageBox.Show("Thư mục rỗng !", "Hệ thống", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

        }


Code cho sự kiện click vào button Đổi tên:
 

private void btn_doiten_Click(object sender, EventArgs e)
        {
            if (path_folder != null)
            {
                var source = new List(); //tạo một danh sách để chứa các file sau khi đổi tên
                foreach (var file in path_folder)
                {
                    string file_path, file_name, file_extension;
                    file_path = Path.GetDirectoryName(file); //lấy thư mục của file từ đường dẫn file
                    file_name = Path.GetFileNameWithoutExtension(file); //lấy tên file không bao gồm phần đuôi kiểu file
                    file_extension = Path.GetExtension(file); //lấy phần đuôi của file vd: .pdf,.png
                    File.Move(file, file_path + "" + md5(file_name) + file_extension); //đổi tên file đó thành tên file mới đã được mã hóa
                    source.Add(file_path + "" + md5(file_name) + file_extension);
                }
                //source.ToArray();
                gridControl1.DataSource = source;
            }
        }

Hoàn tất, chạy thử để xem kết quả. Lưu ý là các file sau khi đổi rồi sẽ không thể đổi tên lại. Hãy cân nhắc thử trên một thư mục không quan trọng, ví dụ kho phim FBI Warning chẳng hạn ! =))
Chúc thành công !

rename-all-file-in-folder-thay-doi-ten-tat-ca-cac-file-trong-thu-muc-2


 

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

Đổi tên file trong thư mục chỉ định với C#
Đăng bởi: TONA Cody - Lượt xem: 25258 22:13:10, 11/01/2017C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.