2012-05-12 31 views
17

Tôi đang phát triển một trò chơi C# Winforms nhỏ và một trong những điều tôi muốn làm là lưu dữ liệu ứng dụng cụ thể. Tuy nhiên, tôi đang đấu tranh một chút để hiểu chính xác nơi này nên được lưu trữ.Vị trí chính xác để lưu trữ dữ liệu ứng dụng cụ thể của tôi ở đâu?

Theo như tôi có thể thấy có một số loại dữ liệu của một ứng dụng có thể lưu trữ và những nơi phù hợp khác nhau cho nó sẽ được tổ chức:

1. tính ứng dụng - Cài đặt như nơi các cửa hàng ứng dụng nó dữ liệu, người đăng nhập cuối cùng là ai, kích thước cửa sổ mặc định, vị trí, v.v ... Thông tin này có giả sử để truy cập vào app.settings hoặc có thể trong sổ đăng ký không?

2. Dữ liệu ứng dụng toàn cầu - Điều này có thể bao gồm sprites và tài sản trò chơi khác được sử dụng bởi mọi người dùng chạy ứng dụng trên máy này. Dữ liệu chung này sẽ được lưu trữ ở đâu? Điều đáng chú ý là trong trường hợp cụ thể của tôi, dữ liệu này sẽ không được cung cấp với cài đặt mặc định và người dùng sẽ được phép thêm nội dung trò chơi của riêng mình, sau đó sẽ có sẵn cho bất kỳ người dùng nào khác trên cùng một máy tính.

3. Dữ liệu ứng dụng cụ thể của người dùng - Điều này sẽ bao gồm tệp trò chơi đã lưu của người dùng, tùy chọn ứng dụng cụ thể và thông tin tiểu sử của họ. Tôi nên lưu trữ ở đâu? Lý tưởng nhất là tôi muốn ứng dụng của mình tương thích với Windows XP, Vista, 7 và dĩ nhiên Windows 8 sắp tới - Tôi không biết điều này có thay đổi phương pháp hay không nhưng hy vọng nó sẽ hỗ trợ tư vấn.

Đây là bước đột phá đầu tiên của tôi vào loại phát triển này và tôi sẽ đánh giá cao một số lời khuyên 'thực hành tốt nhất'.

Trả lời

13

Câu hỏi 2:
tôi đề nghị sử dụng một thư mục con trong Environment.SpecialFolder.CommonAppData (bản đồ để C:\ProgramData trên Windows7 theo mặc định). Đây là một thư mục ẩn.

Câu hỏi 3:
Đặt các tập tin vào Environment.SpecialFolder.AppData (bản đồ để C:\Users\[USERNAME]\AppData\Roaming theo mặc định, thư mục ẩn), nếu bạn hy vọng rằng người dùng không có ý định để sao lưu/chỉnh sửa những. Một số trò chơi cũng lưu trò chơi của họ vào Environment.SpecialFolder.MyDocuments, có thể do người dùng dễ dàng tìm thấy chúng ở đó hơn.

đang

Ví dụ:

var directory = Environment.GetFolderPath(Environment.SpecialFolder.AppData); 


using (FileStream fs = File.Create(Path.Combine(directory, "myAppDirectory", "myFile.txt")) 
{ 
    // write data    
} 

Đối với một complete list of special folders on Windows theo liên kết

SIDENOTES

  • Người dùng được phép để di chuyển xung quanh những thư mục, do đó hãy chắc chắn rằng bạn sử dụng mã được cung cấp trên
  • Có lỗi trong Windows 7 x64 g CommonAppData thư mục và lỗi sẽ trở nên nghiêm trọng hơn trong Windows 8 x64 CP. Tôi đã viết blog về điều này: problems after moving CommonAppData directory on Windows 7 x64 and Windows 8 x64
+0

Một số lời khuyên hữu ích. Tôi đã chỉnh sửa câu hỏi của mình để cho biết rằng các tệp trong câu hỏi 2 có thể thực tế là động. – Martin

+0

@Martin Tôi đã cập nhật câu trả lời của mình sau khi tôi đọc lại câu hỏi của bạn – yas4891

+0

Cảm ơn - rất hữu ích. – Martin

1

Tại sao bạn không lưu dữ liệu vào đối tượng và ghi vào tệp.Sử dụng các tệp khác nhau cho từng loại.

+1

Đó chính xác là những gì tôi đang làm - Tôi chỉ cần biết vị trí vật lý tốt nhất trên đĩa để lưu trữ chúng. – Martin

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