फ़ाइलें मैं जब निम्न विधि का उपयोग कर कन्वर्ट करने के लिए सही समय मिल पढ़ के अधिकांश:(मैं किसी अन्य तिथि प्राप्त) dateTime को FILETIME (विंडोज़ समय) से बदलने में सक्षम नहीं किया जा रहा
// works great most of the time
private static DateTime convertToDateTime(System.Runtime.InteropServices.ComTypes.FILETIME time)
{
long highBits = time.dwHighDateTime;
highBits = highBits << 32;
return DateTime.FromFileTimeUtc(highBits + time.dwLowDateTime);
}
यहाँ मैं यह देखने के लिए दृश्य स्टूडियो में एक उदाहरण है कि यह विधि कभी-कभी उदाहरण के लिए कैसे काम नहीं करती है, मैं अपने कंप्यूटर और डीबग में वास्तविक फ़ाइल दिखाऊंगा। तो फ़ाइल है कि मेरे डिबग में होना होता है:
"एक: \ Users \ Tono \ दस्तावेज़ \ \ परियोजनाओं विजुअल स्टूडियो 2010 \ WpfApplication4 \ WpfApplication4 \ obj \ 86 \ डीबग \ App.g.cs"
और यहाँ FILETIME कि मैं दिनांक समय में बदलने के लिए "मैं LastWriteTime जरूरत है जिस तरह से"
यहां आप देख सकते कोशिश कर रहा हूँ है कि dwHighDateTime = 30,136,437 है और यह भी कि dwLowDateTime = -+२१३८९७९२५० उस फाइल से।
और जब मैं अपने विधि के साथ साथ अन्य तकनीकों मैं निम्नलिखित तारीखों मिल चलाएँ:
तो अब तक सब कुछ महान काम कर रहा है। लेकिन ऐसा क्यों है कि जब मैं खिड़कियों में उस विशिष्ट फ़ाइल को ब्राउज़ और देखता हूं तो मुझे एक अलग तारीख मिलती है! फ़ाइल की गुणों को देखते समय मुझे यह तारीख मिलती है:
तिथियां क्यों मेल नहीं खाती हैं? मैं क्या गलत कर रहा हूं?
आप इसे कठिन तरीके से क्यों कर रहे हैं? ऐसा लगता है कि आप FileInfo क्लास को बहुत अधिक लिख रहे हैं ... http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx –
मुझे यकीन नहीं है कि ओपी यह कठिन तरीका क्यों कर रहा है । लंबे पथ नामों के साथ काम करते समय, यह पथ [MAX_LENGTH] = 260 बाइट्स से लंबा है, तो आपको अप्रबंधित कोड का उपयोग करने के लिए अधिकांश System.IO को फिर से लिखने के लिए आवश्यकता होगी। यहां और जानकारी प्राप्त करने के लिए यहां है: http://blogs.msdn.com/b/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton .aspx –
FileInfo के बजाय FILETIME/GetFileTime का उपयोग करने के लिए वैध परिदृश्य हैं: उदाहरण के लिए, यदि आप किसी फ़ाइल के आंकड़े प्राप्त करना चाहते हैं जिसका हैंडल आप पहले ही खोल चुके हैं (और किसी कारण से FileInfo के माध्यम से इसे फिर से खोल नहीं सकते हैं) –