समस्या उद्घाटन करने के बाद / ASP.NET में एक पाठ फ़ाइल के लिए लिख

वोट
3

मैं एक पाठ फ़ाइल के लिए हर बार एक व्यक्ति में कोई पृष्ठ लोड कुछ आँकड़े लिखना चाहते हैं। लेकिन हर एक बार थोड़ी देर में मैं 'फ़ाइल नहीं खोल सकता है, पहले से ही प्रयोग में' पर हो रही है त्रुटि का प्रकार। मैं नहीं 100% इस त्रुटि को दोहराने कर सकते हैं यह बहुत अनिश्चित है। मेरे कोड है

Public Sub WriteStats(ByVal ad_id As Integer)
    Dim ad_date As String = Now.Year & Now.Month

    Dim FILENAME As String = Server.MapPath(text/BoxedAds.txt)
    Dim objStreamWriter As StreamWriter
    objStreamWriter = File.AppendText(FILENAME)
    objStreamWriter.WriteLine(ad_id & ; & ad_date)
    objStreamWriter.Close()
End Sub

मेरे सवाल है, मैं कैसे ताला और फ़ाइल अनलॉक तो मैं अनिश्चित त्रुटियों प्राप्त करना बंद कर सकते हैं?

धन्यवाद

12/03/2009 को 17:21
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
4
Public Sub WriteStats(ByVal ad_id As Integer)
    Dim ad_date As String = Now.Year & Now.Month
    Dim FILENAME As String = Server.MapPath("text/BoxedAds.txt")
    Dim index As Integer

    Using fs As New IO.FileStream(FILENAME, IO.FileMode.Append, IO.FileAccess.Write, IO.FileShare.ReadWrite), _
          tl As New TextWriterTraceListener(fs)

        index = Trace.Listeners.Add(tl)
        Trace.WriteLine(ad_id & ";" & ad_date)
        Trace.Listeners(index).Flush()
        Trace.Flush()
    End Using
    Trace.Listeners.RemoveAt(index)
End Sub

तीन महत्वपूर्ण यहाँ बातें:

  1. IO.FileShare.ReadWrite का प्रयोग एक ही बार में फ़ाइल में अनेक लेखकों अनुमति देने के लिए।
  2. का उपयोग करते हुए बयान यकीन है कि धारा तुरंत बंद कर दिया है, एक अपवाद तब होता है, भले ही बनाने के लिए। इस टकराव को कम कर देंगे
  3. अगर यह फ़ाइल आपने यह अनुरोध नहीं खोल सकते हैं, यकीन है कि संदेश नहीं खोया है बनाने के लिए TextWriterTraceListener अपने लिए एक अस्थायी फ़ाइल पैदा करेगा।
12/03/2009 को 17:31
का स्रोत उपयोगकर्ता

वोट
4

दो या दो से अधिक अनुरोध मोटे तौर पर एक ही समय में अपने वेब सर्वर हिट हैं, तो वे सभी एक ही फ़ाइल को खोलने की कोशिश करेंगे। आप प्रत्येक अनुरोध के लिए अद्वितीय फ़ाइल नाम बनाने की आवश्यकता होगी।

12/03/2009 को 17:23
का स्रोत उपयोगकर्ता

वोट
1

आप अपवाद को संभालने और कुछ से निपटने का निर्माण एक छोटी यादृच्छिक अंतराल के बाद फ़ाइल के लिए लिख फिर से कोशिश करने के लिए करना होगा।

आप बहुत ज्यादा विवाद मिलता है तो यह अधिक भावना एक डेटाबेस में एक मेज पर यह प्रवेश करने के लिए बनाने के लिए और एक फाइल करने के लिए निर्यात करने के लिए एक प्रक्रिया बना सकता है (इसकी अभी भी जरूरत हो तो)

12/03/2009 को 17:28
का स्रोत उपयोगकर्ता

वोट
0

मैं छोटे से जानकारी का उपयोग करने में कोई समस्या नहीं था: File.AppendAllText (पथ, जानकारी);

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

यदि जानकारी बड़ी है, तुम सच में अलग फ़ाइलों चाहते हैं। उच्च लोड के लिए, मैं जोएल के सुझाव के साथ जाने के लिए और एक अस्थायी फ़ाइल है, जो वैकल्पिक रूप से File.AppendAllText पर अपवाद को पकड़ने, और एक अद्वितीय फ़ाइल नाम के साथ एक ही File.AppeandAllText का उपयोग करके किया जा सकता है पैदा करेगा।

12/03/2009 को 17:29
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more