में लटका होगा मेरे पास StreamReader का उपयोग करके फ़ाइल पढ़ने और लाइन द्वारा इसे संसाधित करने के लिए एक सरल प्रोग्राम है। लेकिन जिस फ़ाइल को मैं पढ़ रहा हूं वह कभी-कभी किसी नेटवर्क फ़ोल्डर में ढूंढ सकता है। मैं इस तरह की एक फ़ाइल के साथ कुछ परीक्षण करते समय आया, कि यदि मैं पढ़ रहा हूं, तो नेटवर्क कनेक्शन किसी बिंदु पर खो गया है, तो परिणामस्वरूप एक ही पंक्ति के परिणामस्वरूप यह एक ही पंक्ति में फिर से लूपिंग करेगा स्ट्रीम से। रीडलाइन()।StreamReader.ReadLine एक अनंत लूप
क्या कोई तरीका है जब मैं फ़ाइल से हैंडल स्ट्रीम से उपलब्ध नहीं है? मैं StreamReader से फ़ाइल हैंडल खो जाने पर एक फ़ाइल नोट नहीं होने की उम्मीद कर रहा था।
यहाँ मेरी कोड स्निपेट है ...
string file = @"Z://1601120903.csv"; //Network file
string line;
StringBuilder stb = new StringBuilder();
StreamReader stream = new StreamReader(file, Encoding.UTF8, true, 1048576);
do
{
line = stream.ReadLine();
// Do some work here
} while (line != "");
स्ट्रीम रीडर हैंडल "खो" नहीं सकता है। यदि यह वास्तव में कैश किए गए डेटा का उपयोग नहीं कर सकता है और फ़ाइल सामग्री प्राप्त करने के लिए नेटवर्क को हिट करना है तो अंतर्निहित ReadFile() कॉल विफल हो जाएगी और आपको सिस्टम प्राप्त होगा। IEException। कौन सी रिपोर्ट "नेटवर्क त्रुटि", फाइलों को पढ़ने के दौरान गलत हो सकती है कि कई चीजों में से एक। आप अपवाद पकड़ लेंगे और उपयोगकर्ता को इसके बारे में बताएंगे ताकि वह समस्या को ठीक करने के लिए जो भी आवश्यक हो, वह कर सके। –
मैं इस पर विचार कर रहा हूं कि इसे बंद करना है या नहीं, क्योंकि यहां एक बग है जो इस कोड में दिखाई नहीं दे रहा है। यहां दिखाया गया कोड वास्तविक कोड का सरलीकृत संस्करण होना चाहिए। – usr
@ हंसपैसेंट, हाँ मैंने शुरुआत में भी यही बात सोचा था। लेकिन अगर आप कोड की इस पंक्ति को निष्पादित करते हैं, तो आप इस मुद्दे का अनुभव करेंगे। यह अपवाद नहीं फेंकता क्योंकि यह मुझे एक ही पंक्ति को अनिश्चित काल तक फेंकता रहता है। – Asanka