Giới thiệu
.NET Framework cung cấp nhiều lớp và phương thức cho phép làm việc dễ dàng với các tập tin. Với các tập tin văn bản, lớp File chứa trong namespace System.IO được dùng phổ biến. Lớp File chứa các phương thức sau:
Phương thức | Chức năng |
AppendAllText | Thêm một chuỗi kí tự đến một file văn bản. Nếu file văn bản này chưa tồn tại thì phải tạo ra nó đầu tiên. |
Copy | Sao chép một tập tin từ một vị trí đến vị trí khác. |
Delete | Xoá một tập tin từ nơi ổ đĩa lưu trữ. |
Exists | Kiểm tra một file có tồn tại hay không. |
Move | Di chuyển file đến vị trí khác. |
ReadAllText | Đọc nội dung của một tập tin văn bản. |
WriteAllText | Ghi nội dung đến một file mới, ghi đè lên nội dung đã có nếu file đã tồn tại. |
Tạo một dự án website mới tên Web_FileManagement (chọn ngôn ngữ VB hay C#). Tạo một thư mục mới tên App_Data trong Web_FileManagement. Thêm một tập tin văn bản tên Text.txt bằng cách nhấp chuột phải vào App_Data chọn Add > Add New Item > Text File, gõ tên file là Text.txt và nhấn Add. Trong tập tin Text.txt gõ một đoạn văn bản bất kỳ, ví dụ: Xin chào các bạn:
Kiểm tra sự tồn tại của tập tin
Tạo một trang ASPX tên FileTest.aspx. Kiểm tra tập tin Text.txt có tồn tại hay không ta viết mã sau trong sự kiện Load của trang (nhấp đôi chuột để đến phương thức Page_Load):
Mã VB
Dim path As String = Server.MapPath("~/App_Data/Text.txt") 'Kiểm tra tập tin Text.txt có tồn tại hay không Try If File.Exists(path) = True Then Response.Write("Tap tin ton tai!") Else Response.Write("Tap tin khong ton tai!") End If Catch ex As Exception Response.Write("Loi: " & e.ToString()) End Try
Mã C#
string path = Server.MapPath("~/App_Data/Text.txt"); //Kiểm tra tập tin Text.txt có tồn tại hay không try { if (File.Exists(path) == true) { Response.Write("Tap tin ton tai!"); } else { Response.Write("Tap tin khong ton tai!"); } } catch (Exception ex) { Response.Write("Loi: " + e.ToString()); }
Tạo một thư mục cùng cấp với thư mục App_Data trong website với tên là App_File:
Di chuyển tập tin
Di chuyển tập tin Text.txt từ thư mục App_Data đến thư mục App_File và có tên mới là TextNew.txt:
Mã VB
Dim path As String = Server.MapPath("~/App_Data/Text.txt") Dim pathnew As String = Server.MapPath("~/App_File/TextNew.txt") Try If File.Exists(path) = True Then File.Move(path, pathnew) Else Response.Write("Tap tin khong ton tai!") End If Catch ex As Exception Response.Write("Loi: " & e.ToString()) End Try
Mã C#
string path = Server.MapPath("~/App_Data/Text.txt"); string pathnew = Server.MapPath("~/App_File/TextNew.txt"); try { if (File.Exists(path) == true) { File.Move(path, pathnew); } else { Response.Write("Tap tin khong ton tai!"); } } catch (Exception ex) { Response.Write("Loi: " + e.ToString()); }
Mở lại Solution Explorer, nhấp chuột phải vào App_File và chọn Refresh Folder sẽ xuất hiện TextNew.txt và sẽ có nội dung như Text.txt, nếu nhấp chuột vào tập tin Text.txt trong App_Data sẽ xuất hiện thông báo không tồn tại Text.txt:
Sao chép tập tin
Sao chép nội dung tâp tin từ TextNew.txt trong App_File đến tập tin Text.txt trong App_Data:
Mã VB
Dim path As String = Server.MapPath("~/App_Data/Text.txt") Dim pathnew As String = Server.MapPath("~/App_File/TextNew.txt") Try If File.Exists(pathnew) = True Then File.Copy(pathnew, path) Else Response.Write("Tap tin khong ton tai!") End If Catch ex As Exception Response.Write("Loi: " & e.ToString()) End Try
Mã C#
string path = Server.MapPath("~/App_Data/Text.txt"); string pathnew = Server.MapPath("~/App_File/TextNew.txt"); try { if (File.Exists(pathnew) == true) { File.Copy(pathnew, path); } else { Response.Write("Tap tin khong ton tai!"); } } catch (Exception ex) { Response.Write("Loi: " + e.ToString()); }
Refresh Folder hai thư mục App_Data và App_File trong cửa sổ Solution Explorer sẽ xuất hiện hai tập tin Text.txt và TextNew.txt có nội dung giống nhau.
Xoá tập tin
Xoá tập tin TextNew.txt trong thư mục App_File:
Mã VB
Dim path As String = Server.MapPath("~/App_Data/Text.txt") Dim pathnew As String = Server.MapPath("~/App_File/TextNew.txt") Try If File.Exists(pathnew) = True Then File.Delete(pathnew) Else Response.Write("Tap tin khong ton tai!") End If Catch ex As Exception Response.Write("Loi: " & e.ToString()) End Try
Mã C#
string path = Server.MapPath("~/App_Data/Text.txt"); string pathnew = Server.MapPath("~/App_File/TextNew.txt"); try { if (File.Exists(pathnew) == true) { File.Delete(pathnew); } else { Response.Write("Tap tin khong ton tai!"); } } catch (Exception ex) { Response.Write("Loi: " + e.ToString()); }
Refresh Folder thư mục App_File sẽ không còn tập tin TextNew.txt.
Đọc nội dung từ một tập tin
Đọc tất cả nội dung từ tập tin Text.txt trong thư mục App_Data và hiển thị ra trang:
Mã VB
Dim path As String = Server.MapPath("~/App_Data/Text.txt") Dim content As String Try If File.Exists(path) = True Then content = File.ReadAllText(path) Response.Write("<h1>" & content & "</h1>") Else Response.Write("Tap tin khong ton tai!") End If Catch ex As Exception Response.Write("Loi: " & e.ToString()) End Try
Mã C#
string path = Server.MapPath("~/App_Data/Text.txt"); string pathnew = Server.MapPath("~/App_File/TextNew.txt"); string content; try { if (File.Exists(pathnew) == true) { content = File.ReadAllText(path); Response.Write("<h1>" + content + "</h1>"); } else { Response.Write("Tap tin khong ton tai!"); } } catch (Exception ex) { Response.Write("Loi: " + e.ToString()); }
Kết quả:
Thêm nội dung vào một tập tin có sẵn
Thêm nội dung vào tập tin Text.txt:
Mã VB
Dim path As String = Server.MapPath("~/App_Data/Text.txt") Dim content As String Try If File.Exists(path) = True Then Dim appendText As String = "Tôi là Ngoc Minh" & Environment.NewLine File.AppendAllText(path, appendText) Else Response.Write("Tap tin khong ton tai!") End If Catch ex As Exception Response.Write("Loi: " & e.ToString()) End Try
Mã C#
string path = Server.MapPath("~/App_Data/Text.txt"); string content; try { if (File.Exists(path) == true) { string appendText = "Tôi là Ngoc Minh" + Environment.NewLine; File.AppendAllText(path, appendText); } else { Response.Write("Tap tin khong ton tai!"); } } catch (Exception ex) { Response.Write("Loi: " + e.ToString()); }
Mở tập tin Text.text:
Ghi nội dung vào tập tin
Ghi nội dung vào một tập tin, nếu tập tin có sẵn thì nội dung mới sẽ được ghi đè lên nội dung cũ, nếu tập tin chưa tồn tại thì tạo tập tin:
Mã VB
Dim path As String = Server.MapPath("~/App_Data/Text.txt") Dim pathnew As String = Server.MapPath("~/App_File/TextNew.txt") Dim appendText As String = "Tôi là Ngoc Minh" & Environment.NewLine Try If File.Exists(pathnew) = True Then File.WriteAllText(pathnew, appendText) Else Dim fs As FileStream = File.Create(pathnew) fs.Close() File.WriteAllText(pathnew, appendText) End If Catch ex As Exception Response.Write("Loi: " & e.ToString()) End Try
Mã C#
string path = Server.MapPath("~/App_Data/Text.txt"); string pathnew = Server.MapPath("~/App_Data/TextNew.txt"); string appendText = "Tôi là Ngoc Minh" & Environment.NewLine; try { if (File.Exists(pathnew) == true) { File.WriteAllText(pathnew, appendText); } else { FileStream fs = File.Create(pathnew); fs.Close(); File.WriteAllText(pathnew, appendText); } } catch (Exception ex) { Response.Write("Loi: " + e.ToString()); }
Quản lý tập tin upload
ASP.NET hỗ trợ FileUpload control cho phép tìm kiếm và chọn tập tin để upload đến web server. Lớp FileUpload thừa kế từ lớp WebControl và có các thuộc tính chỉ đọc (read only properties) sau:
Thuộc tính | Mô tả |
FileBytes | Trả về một mảng chứa các bytes trong tập tin được upload. |
FileContent | Trả về một đối tượng Stream trỏ đến tập tin được upload. |
FileName | Trả về tên của tập tin được upload. |
HasFile | Xác định liệu control có một tập tin để upload hay không |
PostedFile | Trả về một tham chiếu đến tập tin được upload. |
Tập tin upload được đóng gói trong một đối tượng kiểu HttpPostedFile và có thể được truy cập thông qua thuộc tính PostedFile của lớp FileUpload.
Lớp HttpPostedFile có các thuộc tính được dùng thường xuyên như sau:
Thuộc tính | Mô tả |
ContentLength | Trả về kích cỡ của tập tin được upload theo bytes. |
ContentType | Trả về kiểu MIME (là cơ chế nói với trình duyệt hay client các kiểu tài liệu khác nhau được chuyển đến) của tập tin được upload. |
FileName | Trả về tên của tập tin được upload. |
InputStream | Trả về một đối tượng Stream trỏ đến tập tin được upload. |
Tạo một ứng dụng đơn giản dùng FileUpload:
Mở trang Web_FileManagement.aspx ở chế độ Design. Thêm 3 control vào trang gồm 1 FileUpload, 1 Button, và 1 Label. Chuyển trang sang chế độ Source và chỉnh sửa lại nội dung cho các control như sau:
Kết quả trong chế độ Design:
Trong sự kiện Click của button Upload viết mã như sau:
Mã VB
Protected Sub btnUpload_Click(sender As Object, e As EventArgs) Handles btnUpload.Click Dim folderPath As String = Server.MapPath("~/Files/") 'Kiểm tra thư mục File có tồn tại không If Not Directory.Exists(folderPath) Then 'Nếu thư mục không tồn tại thì tạo nó. Directory.CreateDirectory(folderPath) End If 'Lưu tập tin đến thư mục FileUpload1.SaveAs(folderPath & Path.GetFileName(FileUpload1.FileName)) 'Hiển thị thông điệp lblMessage.Text = Path.GetFileName(FileUpload1.FileName) + " đã được upload thành công!" End Sub
Mã C#
protected void btnUpload_Click (object sender, EventArgs e) { string folderPath = Server.MapPath("~/Files/"); //Kiểm tra thư mục File có tồn tại không if (!Directory.Exists(folderPath)) { //Nếu thư mục không tồn tại thì tạo nó. Directory.CreateDirectory(folderPath); } //Lưu tập tin đến thư mục FileUpload1.SaveAs(folderPath + Path.GetFileName(FileUpload1.FileName)); //Hiển thị thông điệp lblMessage.Text = Path.GetFileName(FileUpload1.FileName) + " đã được upload thành công!"; }
Kết quả:
Nhấn nút Choose File để chọn tập tin upload:
Chọn một tập tin bất kỳ
và nhấn nút Upload:
Kiểm tra trong cửa sổ Solution Explorer (nhớ nhấp chuột phải vào Web_FileManagement và chọn Refresh Folder):
Ý kiến bài viết