2009-04-15 18 views
46

मेरे पास एक फ़ाइल है जो मुझे एक अस्थायी स्थान पर लिखने की आवश्यकता है, विंडोज़ में सबसे अच्छी जगह क्या है? इस फ़ाइल को स्थानांतरित करने की आवश्यकता नहीं है क्योंकि मुझे इसे दो बार पढ़ने की आवश्यकता है और जब मैं प्रोग्राम बंद करता हूं तो इसका निपटान करता हूं।विंडोज में अस्थायी फ़ाइल को सहेजने के लिए सही स्थान?

उत्तर

43

उपयोग

Path.GetTempPath(); 

या

Path.GetTempFileName(); 

के रूप में कमेंटेटर ने कहा, GetTempFileName() threadsafe नहीं है - लेकिन आप GUIDs के आधार पर अद्वितीय फ़ाइल नाम का निर्माण कर सकते हैं।

+4

ध्यान दें कि GetTenpFileName हो सकता है अंतर्निहित दौड़ की स्थिति के कारण कई बार बुलाया जाना चाहिए (कुछ और GetTempFileName से वापसी के बीच एक ही फ़ाइल बना सकता है और फ़ाइल खोल रहा है)। – Richard

+0

आप सही हैं, धन्यवाद जानकारी – tanascius

+0

@ रिचर्ड क्या आपका मतलब है कि एक और ऐप/प्रक्रिया या संदर्भ में कोई अन्य धागा ** आपका ** ऐप? –

7

उपयोग System.IO.Path से Windows API समारोह GetTempPath() (MSDN देख)

using System.IO 

... 

myTempPath = Path.GetTempPath(); 

आप जानते हैं कि फाइल सिस्टम में अच्छी तरह से अपने कार्यक्रम के निष्पादन के दौरान बदल सकता है किया जाना चाहिए। या तो Temp पथ बदल सकता है (संभावना नहीं है, दिया गया है), या आपकी अस्थायी फ़ाइल उपयोगकर्ता द्वारा स्थानांतरित या हटा दी गई हो सकती है।

प्रत्येक बार जब आप इसे एक्सेस करते हैं तो इसके अस्तित्व की जांच करने के लिए तैयार रहें और मामले को संभालने के लिए तैयार रहें जब यह शानदार ढंग से नहीं मिलता है।

11

दूसरों के बारे में

System.IO.Path.GetTempPath() 

यह करने के लिए मुझे हरा लेकिन तुम भी अनुप्रयोग डेटा फ़ोल्डर में देख सकते हैं। इससे आपको अपनी फ़ाइल पर अधिक नियंत्रण मिल जाएगा, जैसे कि सभी उपयोगकर्ताओं या 1 प्रति उपयोगकर्ता के लिए क्षमता 1 साझा की गई है।

Application.CommonAppDataPath 
Application.UserAppDataPath 
0

आप एक अस्थायी स्थान और आंशिक विश्वास में काम करने के लिए लिखने के लिए आपके आवेदन की जरूरत है, तो आप IsolatedStorage पर गौर करना होगा।

0

आप एक अस्थायी स्थान के संदर्भ में अपने स्वयं के कस्टम अस्थायी फ़ाइल नाम का निर्माण करना चाहते हैं, तो मैं पथ बंद पट्टी और अपने खुद के फ़ाइल नाम लागू करने के लिए कुछ इस तरह उपयोग करते हैं, ...

string wsPDFfile = Path.GetTempPath() + wsStudentID + "_" + Path.GetFileNameWithoutExtension(Path.GetTempFileName()) + ".pdf"; 
संबंधित मुद्दे