2012-03-11 34 views
8

Tôi hiện đang có mã bên dưới trong ứng dụng WPF của mình, thực hiện chính xác những gì tôi muốn, tuy nhiên, khi xuất bản nó sẽ không nhất thiết có thể truy cập các vị trí thư mục này họ sẽ không trỏ đến đúng thư mục cũng như các thư mục sẽ tồn tại.Thư mục lưu trữ các tệp dữ liệu cục bộ trong ứng dụng WPF

Tôi đã hy vọng ai đó có thể cho tôi biết cách tốt nhất để lưu nội dung nào đó vào thư mục cục bộ là gì?

Cho dù đó là bên trong thư mục ứng dụng hay không cũng không có vấn đề gì.

Mã Tôi hiện đang sử dụng cho các văn bản của file:

using (Stream stream = File.Open(@"..\..\Templates\data.bin", FileMode.Create)) 
      { 
       BinaryFormatter bin = new BinaryFormatter(); 
       bin.Serialize(stream, templateList); 
      } 

Mã Tôi hiện đang sử dụng cho việc tải các tập tin:

using (Stream stream = File.Open(@"..\..\Templates\data.bin", FileMode.Open)) 
     { 
      BinaryFormatter bin = new BinaryFormatter(); 

      templateList = (List<Template>)bin.Deserialize(stream); 
     } 
+0

Không chắc tôi có câu hỏi đúng, có lẽ [Isolated lưu trữ] (http://msdn.microsoft.com /en-us/library/3ak841sy(v=vs.100).aspx) là những gì bạn đang tìm kiếm? – sll

Trả lời

14

Bạn có thể sử dụng Môi trường .SpecialFolder để tìm một nơi thích hợp để đặt các tập tin (ví dụ, ApplicationData sẽ là một nơi tốt để bắt đầu). Nếu bạn chỉ cần một tệp tạm thời, bạn có thể sử dụng Path.GetTempFileName để tạo một tệp.

Chỉnh sửa: Một lưu ý cuối cùng. Lưu trữ các công cụ trong thư mục ứng dụng chính nó có thể là một nỗi đau khổng lồ. Thông thường, thư mục ứng dụng được tạo bằng tài khoản quản trị trong khi cài đặt để ứng dụng của bạn sẽ không thể ghi vào thư mục đó khi đang chạy trên tài khoản người dùng.

+0

Rất cám ơn Matt. Tôi đã sử dụng Environment.SpecialFolder và chỉ cần thực hiện một kiểm tra đơn giản nếu thư mục tồn tại và nếu không nó sẽ tạo ra các thư mục mới. Tất cả đã được làm xong! – Beerlol

7

Bạn có thể sử dụng System.Environment.SpecialFolder.LocalApplicationData để lưu trữ ứng dụng dữ liệu cụ thể:

using System; 

class Sample 
{ 
    public static void Main() 
    { 
      Console.WriteLine("GetFolderPath: {0}", 
       Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)); 
    } 
} 

Ref: http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

Các vấn đề liên quan