- Về thái độ:
3 Biến toàn cục – Session và Application
Application và Session là 2 đối tượng khá quan trọng trong ứng dụng web, giúp các trang aspx có thể liên kết và trao đổi dữ liệu cho nhau. Trong phần này, chúng ta sẽ tìm hiểu và sử dụng 2 đối tượng này trong ứng dụng.
3.1 Đối tượng Application
Đối tượng Application được sử dụng để quản lý tất cả các thông tin của một ứng dụng web. Thông tin được lưu trữ trong đối tượng Application có thể được xử lý trong bất kỳ trang aspx nào trong suốt chu kỳ sống của ứng dụng.
Sử dụng biến Application
Tạo biến Application
Application("Tên biến") = <giá trị> Lấy giá trị từ biến Application <biến> = Application("Tên biến") Ví dụ: Application.Lock() Application("So_lan_truy_cap") = 0 Application("So_nguoi_online") = 0 Application.UnLock() Chú ý:
Do tại một thời điểm có thể có nhiều người cùng lúc truy cập và thay đổi giá trị của các thông tin được lưu trong đối tượng Application, chúng ta nên sử dụng bộ lệnh Lock và UnLock ngay trước và sau khi cập nhật giá trị của biến Application. Biến Application có thể được sử dụng ở bất kỳ trang nào và được duy trì trong suốt chu kỳ sống của ứng dụng.
Duyệt qua tập hợp biến chứa trong Application Dim i As Integer
Response.Write("<b><u>Danh sách các biến trong đối _ tượng Application</u></b><br>")
For i = 0 To Application.Count() - 1
Response.Write(Application.Keys(i) & " : ") Response.Write(Application(i) & "<br />") Next i
3.2 Đối tượng Session
Đối tượng Session được dùng để lưu trữ thông tin của người dùng trong ứng dụng. Thông tin được lưu trữ trong Session là của một người dùng trong một phiên làm việc
97
Chương 8. Hệ thống file và thư mục 1. Xử lý thư mục
1.1. Sử dụng thư viện xuất nhập System.IO
Muốn sử dụng file và thư mục thì trước tiên bạn phải khái báo lệnh sử dụng thư viện IO của .NET:
Imports System.IO
Thư viện này chứa hầu hết các lớp, phương thức xử lý xuất nhập, đọc/ghi trên hệ thống file. Sau khi khai báo, bạn có thể sử dụng tên các lớp mà không cần sử dụng cách viết khai báo đầy đủ. Ví dụ:
‘Khai báo xuất nhập
Imports System.IO Module MakeDir Sub main() ‘Tạo thư mục Directory. CreateDirectory(“C:\A”) ….
Một cách khác, bạn có thể không cần khai báo thư viện System.IO nhưng khi muốn sử dụng bất cứ lớp nào trong đó thì phải sử dụng tên đầy đủ như sau:
Module MakeDir Sub main() ‘Tạo thư mục System.IO.Directory. CreateDirectory(“C:\A”) …. 1.2. Sử dụng lớp Directory
Directory là một lớp chia sẻ (shared) chứa các thư viện sử lý thư mục, có nghĩa rằng bạn không phải tạo một thể hiện của đối tượng lớp Directory khi sử dụng những phương thức lớp. Directory là lớp con nằm trong thư viện System.IO.
Thường, chương trình của bạn tạo ra một thư mục để cất giữ file hoặc thư mục con (sub directory). Để tạo ra một thư mục, bạn có thể sử dụng phương thúc
CreateDirectory của lớp Directory. Chương trình MakeDir.vb bên dưới sử dụng
phương thức CreateDirectory để tạo ra các thư mục khác nhau. Bằng cách thay đổi tên đường dẫn chuyển cho phương thức CreateDirectory, bạn có thể tạo ra thư mục mới trong thư mục gốc hoặc thư mục chỉ định.
1.3. Kiểm tra lỗi khi xử lý thư mục và file
Bạn có thể dùng phát biểu try … catch để kiểm tra quá trình tạo thư mục không thành công như sau:
Try
Directory.CreateDirectory("Folder3")
Console.WriteLine("Thu muc tao xong roi !") Catch E As Exception
‘Đón bắt lỗi
98 Console.Writeline(“E.Massage”)
End try
1.4. Kiểm tra thư mục tồn tại hay không
Để xác định thư mục có tồn tại hay không, bạn gọi phương thức Exists của lớp Directory. Nếu thư mục chưa tồn tại, chương trình sẽ tạo ra thư mục mới. Nếu có, chương trình sẽ hiển thị thông báo cho biết thư mục đã tồn tại. Chương trình DirectoryExists.vb sẽ minh họa cách xử lý này.
1.5. Xóa thư mục
Cũng như nhu cầu phải tạo ra một thư mục, sẽ có lúc chương trình của bạn phải xóa một thư mục hoặc file mà thư mục chứa đựng. Trong trường hợp như vậy, bạn có thể gọi phương thức Delete của lớp Directory để xóa một thư mục hoặc tất cả các file trong thư mục con (tham số thư 2 là true)
Directory.Delete(“Đường dẫn thư mục”, True) Ví dụ:
Directory.Delete(“C:\Myfolder”)
Nếu bạn muốn xóa thư mục nhưng nếu có các file trong thư mục thì thao tác xóa không thực hiện được, bạn có thể truyền tham số thứ 2 là false cho phương thức Delete, hoặc không cần truyền đối số thứ hai.
Directory.Delete(“Đường dẫn thư mục”, false) Directory.Delete(“Đường dẫn thư mục”)
Chương trình DeleteDirectory.vb sau sẽ sử dụng phương thức Delete của lớp Directory để xóa thư mục mà bạn tạo ra trước đây bằng chương trình MakeDir.vb.
Imports System.IO Module DeleteDirectory Sub Main()
Console.WriteLine("Xoa thu muc...") Try
Directory.Delete("C:\Folder1", True) Console.WriteLine("Da xoa thu muc") Catch E As Exception
Console.WriteLine("Loi xoa thu muc") Console.WriteLine(E.Message)
End Try End Sub End Module
1.6. Di chuyển file và thư mục
Ngoài việc cho phép chương trình của bạn xóa một thư mục, lớp Directory cũng cho phép bạn di chuyển thư mục và những file mà thư mục chứa đựng bằng phương thức Move. Phát biểu sau cho phép di chuyển một thư mục có tên
C:\VB2005.2\Folder2 sang thư mục gốc với tên Folder 2: Directory.Move(“C:\VB2005.2\Folder2”, “C:\Folder2”)
99 Bạn có thể sử dụng phương thức SetCurrentDirectory và GetCurrentDirectory để thực hiện điều này. Chương trình DirectoryInfo.vb sẽ sử dụng phương thức
GetCurrentDirectory để xác định thư mục hiện hành, sau đó sử dụng phương thức SetCurrentDirectory để chỉ định thư mục gốc làm thư mục hiện hành.
Imports System.IO Module DirectoryInfo Sub Main()
‘In thông tin về thư mục hiện hành
Console.WriteLine("Thu muc hien tai la {0}", Directory.GetCurrentDirectory())
‘Đặt thư mục hiện hành là đường dẫn khác
Directory.SetCurrentDirectory("C:\")
‘In thông tin về thư mục hiện hành đã thay đổi
Console.WriteLine("Thu muc hien hanh moi {0}", Directory.GetCurrentDirectory())
Console.ReadLine() End Sub
End Module
1.8. Lấy và xử lý thuộc tính thư mục
Trong quá trình chương trình của chúng ta thao tác xử lý thư mục, sẽ có lúc bạn cần biết thông tin về thư mục (Như ngày tháng và thời gian cập nhật sau chót…). Để giúp chương trình của bạn xác định những thuộc tính thư mục, lớp DirectoryInfo cung cấp các phương thức mà bạn có thể sử dụng để lấy hoặc đặt thuộc tính cho thư mục.
Chương trình ShowFolderAttribute.vb sau đây sẽ sử dụng phương thức của lớp DirectoryInfo, cho biết thông tin thư mục C:\WINDOWS.
Imports System.IO
Module ShowFolderAttribute Sub Main()
If (Directory.Exists("C:\WINDOWS")) Then Dim Dir As New DirectoryInfo("C:\Windows") Console.WriteLine("Ten day du: {0}", Dir.FullName) Console.WriteLine("Ngay tao: {0}", Dir.CreationTime)
Console.WriteLine("Lan truy cap cuoi: {0}", Dir.LastAccessTime) Console.WriteLine("Lan ghi cuoi cung: {0}", Dir.LastWriteTime) Else
Console.WriteLine("C:\WINDOWS khong ton tai") End If
End Sub End Module
Cũng như lớp Directory cung cấp các phương thức sử dụng lấy thông tin về thư mục, lớp DirectoryInfo này cung cấp những phương thức (mà chương trình của bạn có thể sử dụng để đặt thuộc tính cho thư mục). Chương trình SetDirectoryAttributes.vb sau sẽ đặt lại thuộc tính thời gian cho thư mục C:\WINDOWS.
Imports System.IO
100 Sub Main()
If (Directory.Exists("C:\WINDOWS")) Then
Dim Dir As New DirectoryInfo("C:\WINDOWS") Dim DateTimeNow As DateTime = DateTime.Now() Try
Console.WriteLine("Cap nhat thuoc tinh thu muc") ' thay doi thuoc tinh thu muc
Dir.CreationTime = DateTimeNow Dir.LastAccessTime = DateTimeNow Dir.LastWriteTime = DateTimeNow Catch ex As Exception
' Xu ly loi
Console.WriteLine("Loi khi cap nhat") Console.WriteLine(ex.Message)
End Try
Console.WriteLine("Thu muc khong ton tai") End If
End Sub End Module
Biên dịch xong thử chạy lại ShowFolderAttribute để nhìn thấy sự thay đổi