2012-05-12 12 views
17

मैं एक छोटा सी # विनफॉर्म गेम विकसित कर रहा हूं और उन चीजों में से एक जो मैं करना चाहता हूं वह एप्लिकेशन विशिष्ट डेटा को सहेजना है। हालांकि, मैं सही जगह को समझने के लिए थोड़ा संघर्ष कर रहा हूं जिसे इसे संग्रहीत किया जाना चाहिए।मेरे एप्लिकेशन विशिष्ट डेटा को स्टोर करने के लिए सही जगह कहां है?

जहां तक ​​मैं वहाँ डेटा एक आवेदन संग्रहीत कर सकता है और उसके अनुसार अलग-अलग स्थानों के कई प्रकार हैं के लिए यह आयोजित होने वाले देख सकते हैं:

1. आवेदन गुण - जैसे जहां आवेदन भंडार यह है के रूप में सेटिंग्स डेटा, जो अंतिम लॉग इन उपयोगकर्ता था, डिफ़ॉल्ट विंडो आकार, स्थिति इत्यादि। क्या यह जानकारी ऐप.सेटिंग, या शायद रजिस्ट्री में जाने का अनुमान है?

2. वैश्विक एप्लिकेशन डेटा - इसमें स्प्राइट्स और अन्य गेम संपत्तियां शामिल हो सकती हैं जिनका उपयोग इस मशीन पर एप्लिकेशन चलाने वाले प्रत्येक उपयोगकर्ता द्वारा किया जाता है। यह आम डेटा कहां संग्रहीत किया जाएगा? यह ध्यान देने योग्य है कि मेरे विशेष मामले में यह डेटा डिफ़ॉल्ट इंस्टॉल के साथ प्रदान नहीं किया जाएगा और उपयोगकर्ताओं को अपनी खुद की गेम संपत्तियां जोड़ने की अनुमति दी जाएगी जो कि उसी कंप्यूटर पर किसी भी अन्य उपयोगकर्ता के लिए उपलब्ध होनी चाहिए।

3. उपयोगकर्ता विशिष्ट एप्लिकेशन डेटा - इसमें उपयोगकर्ताओं को गेम फ़ाइलों को सहेजने, उनकी विशिष्ट एप्लिकेशन वरीयताओं और उनकी प्रोफ़ाइल जानकारी शामिल होगी। मुझे यह कहां स्टोर करना चाहिए?

आदर्श रूप से मैं चाहता हूं कि मेरा एप्लिकेशन विंडोज एक्सपी, विस्टा, 7 और निश्चित रूप से आने वाले विंडोज 8 के साथ संगत हो - मुझे नहीं पता कि यह विधियों को बदलता है लेकिन उम्मीद है कि यह सलाह प्रदान करने में सहायता करेगा।

यह इस तरह के विकास में मेरा पहला प्रयास है और मैं कुछ 'सर्वोत्तम अभ्यास' सलाह की सराहना करता हूं।

उत्तर

13

प्रश्न 2:
मैं एक सबफ़ोल्डर Environment.SpecialFolder.CommonAppData में (नक्शे C:\ProgramData को Windows7 पर डिफ़ॉल्ट रूप से) का उपयोग करें। यह एक छिपा फ़ोल्डर है।

प्रश्न 3:
(डिफ़ॉल्ट, छुपे हुए फोल्डर द्वारा C:\Users\[USERNAME]\AppData\Roaming के नक्शे) Environment.SpecialFolder.AppData में उन फ़ाइलों रखो, अगर आप उम्मीद करते हैं कि उपयोगकर्ता बैकअप का इरादा नहीं है/उन संशोधित करते हैं। कुछ गेम ने अपने सेव गेम्स को Environment.SpecialFolder.MyDocuments में भी रखा है, संभवतया क्योंकि उपयोगकर्ताओं को वहां उन्हें ढूंढना आसान है।

उदाहरण कोड:

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


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

एक complete list of special folders on Windows के लिए लिंक का पालन करें

SIDENOTES

  • उपयोगकर्ता उन निर्देशिकाओं चारों ओर ले जाने, तो आपके द्वारा दी गई कोड का उपयोग सुनिश्चित करने के लिए अनुमति दी जाती है
  • विंडोज 7 x64 में एक बग है जी CommonAppData निर्देशिका और विंडोज 8 x64 सीपी में बग अधिक गंभीर हो जाता है। मैंने इस बारे में ब्लॉग किया है: problems after moving CommonAppData directory on Windows 7 x64 and Windows 8 x64
+0

कुछ अच्छी सलाह। मैंने यह संकेत देने के लिए अपना प्रश्न संपादित किया कि प्रश्न 2 में फाइलें वास्तव में गतिशील हो सकती हैं। – Martin

+0

@ मार्टिन मैंने अपना प्रश्न – yas4891

+0

धन्यवाद फिर से पढ़ने के बाद अपना जवाब अपडेट कर दिया है - बहुत उपयोगी। – Martin

1

क्यों आप किसी ऑब्जेक्ट को डेटा सहेजते नहीं हैं और इसे फ़ाइल में लिखते हैं।प्रत्येक प्रकार के लिए विभिन्न फाइलों का प्रयोग करें।

+1

यह वही है जो मैं कर रहा हूं - मुझे बस इसकी आवश्यकता है उन्हें स्टोर करने के लिए डिस्क पर सबसे अच्छा भौतिक स्थान पता है। – Martin