2010-01-19 9 views
5

मैं सी #/.NET में एक एप्लीकेशन लिखने पर विचार करता हूं जो उपयोगकर्ता के कंप्यूटर पर प्रोग्रामेटिक रूप से एक एक्सएमएल फ़ाइल को बदल देगा और मैं यह निर्धारित करने की कोशिश कर रहा हूं कि सिल्वरलाइट (और कौन से संस्करण, मोड में) इस कार्य के लिए काम करेंगे या नहीं।क्या Silverlight स्थानीय उपयोगकर्ता के कंप्यूटर पर एक फ़ाइल बदलने में सक्षम है?

यहाँ कार्यप्रवाह है:

  • उपयोगकर्ता का चयन करता है फ़ाइल
  • आवेदन फ़ाइल
  • आवेदन बचाता फ़ाइल को संशोधित करता है, मूल फ़ाइल अधिलेखित

सिल्वरलाइट में यह संभव है? यदि हां, तो कौन से संस्करण और किस स्थितियों में?

+0

मुझे आशा है कि सिल्वरलाइट मेरी फाइलों के साथ दखल नहीं दे सकता है। – zneak

+0

मुझे पता है कि सिल्वरलाइट आपकी फ़ाइलों के लिए अंधेरा है जबतक कि आप विशेष रूप से एक फ़ाइल का चयन नहीं करते हैं (जो मुझे लगता है कि एक संवाद बॉक्स के माध्यम से होना चाहिए)। मैं इस बारे में उत्सुक हूं कि, यदि उपयोगकर्ता एसएल आवेदन अनुमति देने का विकल्प चुनता है (यदि यह भी संभव है), तो एसएल फिर आईओ स्ट्रीम के माध्यम से मूल स्थान पर वापस लिख सकता है। –

उत्तर

2

कुछ उत्तर यहां पृथक भंडारण पर ध्यान केंद्रित करते हैं। यदि किसी अन्य एप्लिकेशन को इस डेटा तक पहुंचने की आवश्यकता नहीं है तो शायद पृथक संग्रहण आपके लिए उत्तर है। यह link एक ब्लॉग है जो वर्णन करता है कि संक्षेप में आप पृथक संग्रहण का उपयोग कैसे करते हैं।

मुझे संदेह है कि संभवतः यह नहीं है कि आप चाहते हैं कि उपयोगकर्ता फ़ाइल का चयन करें।

निश्चित रूप से एसएल 3 में आप उपयोगकर्ता को फ़ाइल का चयन कर सकते हैं और फिर आप इसे पढ़ सकते हैं।

हालांकि इसे फिर से सहेजने के लिए आपको उस फ़ाइल स्ट्रीम को प्राप्त करने के लिए उपयोगकर्ता को "फ़ाइल सहेजें" संवाद दिखाना होगा, जिसे आप लिख सकते हैं।

एसएल 4 में ओईबी चल रहे निजी निजी लोगों के साथ आप इस तरह की फ़ाइलों को सीधे माइक्रोसॉफ्ट जैसे उपयोगकर्ता फ़ोल्डर में सहेज सकते हैं।

संपादित

बस बिल्कुल स्पष्ट होना करने के लिए, आप एक फ़ाइल है कि OpenFileDialog केवल पढ़ने का उपयोग कर अधिग्रहण कर लिया था करने के लिए नहीं लिख सकते हैं, तो आप एक फ़ाइल है कि के रूप में SaveFileDialog का उपयोग कर प्राप्त कर लिया केवल लिखें नहीं पढ़ सकते हैं।

+0

आपके विस्तृत उत्तर के लिए धन्यवाद। जब आप कहते हैं 'हालांकि इसे फिर से सहेजने के लिए आपको एक फ़ाइल स्ट्रीम प्राप्त करने के लिए उपयोगकर्ता को "फ़ाइल सहेजें" संवाद दिखाना होगा, जिसे आप लिख सकते हैं।', क्या यह एसएल 3 में संभव है या इसे एसएल 4 की आवश्यकता है ? –

+0

हां अन्यथा योग्यता प्राप्त होने तक मैं वर्तमान संस्करण SL3 को प्रतिबिंबित कर रहा हूं। आप एसएल 3 के इन-ब्राउजर इंस्टेंस से एक सेव डायलॉग दिखा सकते हैं, उपयोगकर्ता फ़ाइल चुनता है और इस तरह आपके कोड को चयनित फ़ाइल में लिखने का अधिकार दिया गया है जैसा कि यह उपयुक्त दिखता है। OpenFileDialog 'FileInfo'' देता है जिस पर आप 'ओपनराइड' कर सकते हैं लेकिन 'ओपनवाइट' नहीं' जबकि SaveFileDialog 'FileInfo'' देता है जिस पर आप 'ओपनवाइट' कर सकते हैं लेकिन 'ओपन रीड' नहीं कर सकते हैं। – AnthonyWJones

+1

ठीक है। मुझे लगता है कि समझ में आता है। इसलिए यदि मैं किसी उपयोगकर्ता की फ़ाइल को संशोधित करना चाहता था, तो मैं 1) उपयोगकर्ता को फ़ाइल के लिए पूछूंगा, 2) कोड में फ़ाइल को संशोधित करें, फिर 3) उपयोगकर्ता से फ़ाइल को सहेजने के लिए कहें। यदि उपयोगकर्ता अपनी मूल फ़ाइल को ओवरराइट करना चुनता है, तो यह उनकी पसंद है, लेकिन उपयोगकर्ता को अभी भी कहना है कि फ़ाइल को कहां से सहेजना है। –

1

SL3 एक पृथक संग्रहण क्षेत्र के लिए उपयोग में सक्षम बनाता है, SL4 ऊपर पहुँच आगे भी उन्हें mydocs में फ़ाइलों को एक्सेस करने से भरोसा किया अनुप्रयोगों के लिए खुल जाता है, मेरीतस्वीरें आदि

+0

क्या आप उस पर विस्तार कर सकते हैं और समझा सकते हैं कि यह कैसे काम कर सकता है? विशेष रूप से, क्या मैं एसएल 3 में और वर्कफ़्लो को पूरा करने में सक्षम हूं? –

3

चांदी की रोशनी एक सुरक्षा 'सैंडबॉक्स' के अंदर संचालित होती है।

आप केवल ओपन फ़ाइल संवाद के माध्यम से कंप्यूटर हार्ड ड्राइव से फ़ाइलों तक पहुंच सकते हैं। आप सिल्वरलाइट 2 और ऊपर का उपयोग करके Isolated Storage से पढ़ और लिख सकते हैं।

सिल्वरलाइट 4 में आ रहा है आप जैसे मेरे दस्तावेज़, मेरा संगीत, मेरे चित्र आदि के रूप में "विशेष निर्देशिका" से फ़ाइलों को एक्सेस करने की क्षमता होगी (http://weblogs.asp.net/nmarun/archive/2009/11/27/local-file-access-silverlight-4.aspx)

+0

क्या पढ़ा और लिखना ओपन फ़ाइल संवाद बॉक्स के माध्यम से प्राप्त मूल फ़ाइल में परिवर्तन लागू करेगा? –

+0

इसके अलावा, यह किस संस्करण पर लागू होता है? –

1

सिल्वरलाइट अनुप्रयोगों उपयोगकर्ता के पर मनमाने ढंग से फ़ाइलें नहीं बदल सकते कंप्यूटर। हालांकि, वे फ़ाइलें स्थानीय पृथक संग्रहण का उपयोग कर स्टोर करने में सक्षम हैं:

.नेट फ्रेमवर्क में, अलग-थलग रखने की जगह एक भंडारण तंत्र है कि किसी भी सुरक्षा नीतियों का उल्लंघन किए बिना स्थानीय मशीन पर डेटा को बचाने के लिए आंशिक रूप से भरोसा किया अनुप्रयोगों को सक्षम करता है कंप्यूटर पर सेट करें। पृथक भंडारण .NET Framework के पहले संस्करण के आसपास है और यह विशेष रूप से डाउनलोड किए गए, आंशिक रूप से विश्वसनीय घटकों के लिए उपयोगी है जिन्हें आम तौर पर मानक I/O तंत्र तक पहुंच नहीं दी जाती है। हालांकि, इन वही अनुप्रयोगों को आम तौर पर पृथक भंडारण का उपयोग करने का अधिकार दिया जाता है। इस तरह, संभावित रूप से अविश्वसनीय स्रोतों से आने वाले अनुप्रयोग अभी भी कुछ डिस्क I/O कर सकते हैं, यद्यपि नियंत्रित तरीके से।

आप निम्न आलेख में है कि के बारे में अधिक पढ़ सकते हैं:

Silverlight and Local Storage

+0

लिंक "सिल्वरलाइट और स्थानीय संग्रहण" के लिए धन्यवाद। हालांकि, यह सिल्वरलाइट के संस्करण 2.0 पर लागू होता है। मैं सोच रहा हूं कि तब से अधिक काम किया गया है। –

+0

स्पष्ट रूप से, सिल्वरलाइट 4.0 'SaveFileDialog' (http://msdn.microsoft.com/en-us/library/system.windows.controls.savefiledialog%28VS.95%29.aspx) पेश करेगा। हालांकि, यह उपयोगकर्ताओं को स्थानीय फ़ाइल नाम निर्दिष्ट करने में सक्षम बनाता है, एप्लिकेशन को स्थान चुनने की अनुमति नहीं है। –

1

ओएस में निर्मित फ़ाइल खोलें संवाद/सहेजें का उपयोग करने की अनुमति देता है सिल्वरलाइट/किसी भी फ़ाइल को संशोधित कि उपयोगकर्ता एक फ़ाइल स्ट्रीम लौटकर निर्दिष्ट करता है जिस पर सिल्वरलाइट ऐप का उपयोग होता है।

इसके अलावा, सिल्वरलाइट ऐप के अपने अलग भंडारण तक पहुंच है।

+0

यह किस संस्करण (ओं) पर लागू होता है? –

+0

फ़ाइल संवाद V2.0 और बाद में लागू होता है। मेरा मानना ​​है कि अलग भंडारण सभी संस्करणों पर लागू होता है। – Aaron

संबंधित मुद्दे