382
Chương 9: File, thư mục, và I/O
}
18.
18.
S d ng không gian l u tr riêng
ử ụ
ư ữ
S d ng không gian l u tr riêng
ử ụ
ư ữ
Bạn cần lưu dữ liệu vào file, nhưng ứng dụng của bạn không được cấp
FileIOPermission
để sử dụng ổ đĩa cứng.
Sử dụng các lớp
IsolatedStorageFile
và
IsolatedStorageFileStream
thuộc không
gian tên
System.IO.IsolatedStorage
. Các lớp này cho phép ứng dụng ghi dữ liệu
vào một file trong thư mục của một người dùng cụ thể mà không cần được cấp
phép truy xuất trực tiếp ổ đĩa cứng cục bộ.
.NET Framework hỗ trợ không gian lưu trữ riêng, tức là cho phép bạn đọc và ghi vào hệ thống
file ảo của người dùng cụ thể mà CLR quản lý. Khi bạn tạo các file lưu trữ riêng, dữ liệu tự
động được lưu vào một nơi duy nhất trong đường dẫn profile của người dùng (thông thường
đường dẫn này có dạng C:\Documents and Settings\[username]\Local Settings\Application
Data\IsolatedStorage\ [guid_identifier]).
Một lý do để sử dụng không gian lưu trữ riêng là trao cho một ứng dụng có-độ-tin cậy-một-
phần có khả năng hạn chế khi lưu trữ dữ liệu (xem mục 13.1 để có thêm thông tin về mã lệnh
có-độ-tin-cậy-một-phần). Ví dụ, chính sách bảo mật CLR mặc định cấp cho mã lệnh cục bộ có
FileIOPermission
không hạn chế, tức là có quyền đọc và ghi bất kỳ file nào. Mã lệnh thực thi
từ một máy chủ ở xa trên mạng Intranet cục bộ tự động được cấp ít quyền hơn—thiếu mất
FileIOPermission
, nhưng có
IsolatedStoragePermission
, tức là có khả năng sử dụng không
gian lưu trữ riêng (chính sách bảo mật cũng hạn chế dung lượng tối đa có thể được sử dụng
trong không gian lưu trữ riêng). Một lý do khác để sử dụng không gian lưu trữ riêng là bảo vệ
dữ liệu tốt hơn. Ví dụ, đối với dữ liệu trong không gian lưu trữ riêng của một người dùng,
những người dùng khác không phải là nhà quản trị sẽ không được quyền truy xuất.
Đoạn mã dưới đây minh họa cách truy xuất không gian lưu trữ riêng:
using System;
using System.IO;
using System.IO.IsolatedStorage;
public class IsolatedStoreTest {
private static void Main() {
// Tạo không gian lưu trữ riêng cho người dùng hiện hành.
IsolatedStorageFile store =
IsolatedStorageFile.GetUserStoreForAssembly();