मेरे पास एक प्रोजेक्ट है जिसमें दो फ़ाइलें हैं: book.xls और book.xlsx। यदि मैं निम्नलिखित कोड चलाता हूं (.NET फ्रेमवर्क पर) तो यह दोनों फाइलों को अपेक्षित रूप से पाता है, केवल .xls को एक्सटेंशन के रूप में पास करने के बावजूद।

using System;
using System.IO;
using System.Linq;

namespace GetFilesFromExtensionsWithTests
{
    public class Program
    {
        static void Main(string[] args)
        {
            var filesWithExtension = FindFiles("../../", "*.xls");
            foreach (string file in filesWithExtension)
            {
                Console.WriteLine($"Found: {file}");
                // Found: ../../ book.xls
                // Found: ../../ book.xlsx
            }
            Console.ReadKey();
        }

        static public string[] FindFiles(string path, string extension)
        {
            var files = Directory.EnumerateFiles(path, extension).Select(p => p).ToArray();

            return files;
        }
    }
}

यह अपेक्षित व्यवहार है: जब आप Directory.EnumerateFiles को तीन वर्णों का एक्सटेंशन पास करते हैं, तो उसे xls से शुरू होने वाले सभी एक्सटेंशन मिलेंगे (docs):

जब आप "*.txt" जैसे खोज पैटर्न में तारक वाइल्डकार्ड वर्ण का उपयोग करते हैं, तो निर्दिष्ट एक्सटेंशन में वर्णों की संख्या निम्न प्रकार से खोज को प्रभावित करती है:

  • यदि निर्दिष्ट एक्सटेंशन ठीक तीन वर्ण लंबा है, तो विधि एक्सटेंशन वाली फ़ाइलें लौटाती है जो निर्दिष्ट एक्सटेंशन से शुरू होती हैं। उदाहरण के लिए, "*.xls" "book.xls" और "book.xlsx" दोनों लौटाता है।

अजीब बात यह है कि अगर मैं एक xUnit प्रोजेक्ट (.NET Core) से FindFiles चलाता हूं तो यह केवल book.xls पाता है:

using GetFilesFromExtensionsWithTests;
using Xunit;

namespace GetFilesFromExtensionsWithTests_Tests
{
    public class UnitTest1
    {
        [Fact]
        public void Test1()
        {
            string[] files = Program.FindFiles(
                @"..\..\..\..\FileExtensionsWithTests", "*.xls"
            );

            // Test fails, because it only finds book.xls, but not book.xlsx
            Assert.Equal(2, files.Length);
        }
    }
}

ये अंतर क्यों है?

14 सितंबर 2020 को संपादित करें

यह एक ज्ञात समस्या है https://github.com/dotnet/dotnet-api- दस्तावेज़/मुद्दे/4052

1
Roald 10 सितंबर 2020, 14:01

1 उत्तर

सबसे बढ़िया उत्तर

यह एक ज्ञात समस्या है जिसकी रिपोर्ट https://github.com/dotnet/ पर की जाती है। dotnet-api-docs/issues/4052

1
Roald 14 सितंबर 2020, 10:09