क्या यह पता लगाने का कोई तरीका है कि कोई फ़ाइल पहले से खुली है या नहीं?जांचें कि कोई फ़ाइल खुली है
उत्तर
protected virtual bool IsFileinUse(FileInfo file)
{
FileStream stream = null;
try
{
stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch (IOException)
{
//the file is unavailable because it is:
//still being written to
//or being processed by another thread
//or does not exist (has already been processed)
return true;
}
finally
{
if (stream != null)
stream.Close();
}
return false;
}
यदि प्रक्रिया में फ़ाइल तक पहुंच पहुंच नहीं है तो यह एक भ्रामक परिणाम उत्पन्न करेगा (खुले असफल हो जाएंगे, लेकिन जरूरी नहीं है क्योंकि एक हैंडल मौजूद है।) पढ़ने के लिए खोलना कम त्रुटि-प्रवण होगा। – hemp
आश्चर्यजनक है कि अधिकांश भाषाओं में फ़ाइल का परीक्षण करने का कोई तरीका नहीं है। हम ओएस/2 में सी ++ के तहत उसी प्रकार की विधि का उपयोग करते थे। यानी फ़ाइल को अनन्य खोलने का प्रयास करें। यह काफी अच्छी तरह से काम करता है, लेकिन मैंने कभी इसे सुरुचिपूर्ण नहीं सोचा है। – Matt
यह एक भाषा सुविधा नहीं है, यह एक ओएस सुविधा है। उस जानकारी के लिए पूछने के लिए बस एक साधारण एपीआई (विंडोज़ में) मौजूद नहीं है। यह प्राप्त करना संभव है, लेकिन यह निम्न स्तर है और ऐसे कई पैरामीटर हैं जिन्हें "खुले" के अर्थ के बारे में जानने के लिए निर्दिष्ट किया जाना होगा। – hemp
@pranay राणा के रूप में, लेकिन हमें विश्वास है कि हम अपने फ़ाइल हैंडल को बंद करने की जरूरत है:
public bool IsFileInUse(string path)
{
if (string.IsNullOrEmpty(path))
throw new ArgumentException("'path' cannot be null or empty.", "path");
try {
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read)) { }
} catch (IOException) {
return true;
}
return false;
}
@pranay rana के समान, मैंने इस विधि का परीक्षण किया, लेकिन यह पता नहीं लगा कि फ़ाइल नोटपैड में कब खुलती है । – James
आप मतलब है कि आप जाँच करना चाहते हैं, तो एक फ़ाइल खुला है, तो इससे पहले कि आप को खोलने का प्रयास , फिर नहीं। (कम से कम निम्न स्तर के बिना नहीं और सिस्टम में खुले प्रत्येक फ़ाइल हैंडल की जांच करें।)
इसके अलावा, जब आप इसे प्राप्त करते हैं तो जानकारी पुरानी होगी। भले ही परीक्षण वापस आएगा कि फ़ाइल खुली नहीं है, फिर भी आपको रिटर्न वैल्यू का उपयोग करने का मौका मिलने से पहले खोला जा सकता था।
तो, स्थिति को संभालने का सही तरीका फ़ाइल खोलने का प्रयास करना है, और होने वाली किसी भी त्रुटि को संभालना है।
सहमत हुए। मैं एक नामित कक्षा तैयार करूंगा जो खुली फ़ाइल तर्क या कम से कम परीक्षण (IsFileAvailable) को लपेटता है। यह आपको अपवाद प्रबंधन को विशेष रूप से जिम्मेदार वर्ग के साथ रखने और इसे पुन: प्रयोज्य बनाने की अनुमति देगा। अधिक विस्तृत प्रतिक्रिया देने के लिए, आप फ़ाइल आकार का परीक्षण करने के लिए फ़ाइल आकार का परीक्षण करने के लिए और तर्क भी लागू कर सकते हैं। यह आपके उपभोग कोड को अधिक क्लीनर भी बना देगा।
- 1. जांचें कि कोई शीट खुली है या नहीं
- 2. जांचें कि कोई फ़ाइल Yii
- 3. जांचें कि कोई फ़ाइल वाइल्डकार्ड
- 4. जांचें कि कोई सूची है
- 5. जांचें कि फ़ाइल
- 6. जांचें कि फ़ाइल पाइथन
- 7. जांचें कि कोई ऑब्जेक्ट
- 8. जांचें कि फ़ाइल
- 9. जांचें कि फ़ाइल ksh
- 10. जांचें कि बैच फ़ाइल
- 11. जांचें कि फ़ाइल php
- 12. जांचें कि कोई निर्देशिका (फ़ाइल सिस्टम) रूट है
- 13. जांचें कि कोई स्थानीय फ़ाइल मौजूद है (HTML5 एफएस एपीआई)
- 14. जांचें कि कोई फ़ाइल वास्तविक है या प्रतीकात्मक लिंक
- 15. जांचें कि क्या पाइथन
- 16. जांचें कि क्या NSURL स्थानीय फ़ाइल है
- 17. जांचें कि फ़ाइल मौजूद है या नहीं,
- 18. जांचें कि फ़ाइल में पाइथन
- 19. जांचें कि कोई फॉर्म इनपुट मौजूद है
- 20. जांचें कि कोई node.js मॉड्यूल उपलब्ध है
- 21. जांचें कि कोई स्ट्रिंग एक्सएमएल स्वरूपित है
- 22. जांचें कि कोई स्ट्रिंग एक यूआरएल है
- 23. पायथन: जांचें कि कोई ऑब्जेक्ट अनुक्रम है
- 24. जावास्क्रिप्ट जांचें कि कोई चर विंडो है
- 25. जांचें कि कोई ऑब्जेक्ट शून्य है
- 26. जांचें कि कोई पोर्ट खुला है
- 27. जांचें कि कोई BSTR खाली है
- 28. जांचें कि कोई SQL तालिका मौजूद है
- 29. जांचें कि कोई कॉम्बोबॉक्स मान चयनित है
- 30. सी ++ जांचें कि कोई दिनांक मान्य है
कृपया अधिक विशिष्टताओं की पेशकश करें। आपकी प्रक्रिया, या दूसरी प्रक्रिया से पहले से ही खुला है? खुली अवधि, या सिर्फ लिखने के उपयोग के साथ खोला? साझा करने के बारे में क्या? आदि यह सवाल बहुत अस्पष्ट है। – hemp