ফোল্ডারে একটি নির্দিষ্ট এক্সটেনশন সহ একটি ফাইল সন্ধান করুন


93

একটি ফোল্ডার পথ দেওয়া (যেমন C:\Random Folder) দেওয়া, আমি এতে কোনও ফাইল কীভাবে খুঁজে পাব যা একটি নির্দিষ্ট এক্সটেনশন ধরে রাখে, এর মতো txt? আমি ধরে নিয়েছি ডিরেক্টরিতে আমাকে একটি অনুসন্ধান করতে হবে *.txt, তবে আমি নিশ্চিত না যে আমার এই অনুসন্ধানটি প্রথম স্থানে কীভাবে শুরু করা উচিত।

উত্তর:


183

System.IO.Directoryশ্রেণী এবং স্ট্যাটিক পদ্ধতি GetFiles। এটিতে একটি ওভারলোড রয়েছে যা কোনও পথ এবং অনুসন্ধানের ধরণ গ্রহণ করে। উদাহরণ:

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");

ধন্যবাদ! সমস্ত উত্তর ভাল ছিল, তবে আপনি প্রথমে উত্তর দিয়েছেন ... হ্যাঁ :)
ডমিনিক কে

6
এটি এক্সটেনশনটি txt_ এর মতো কিছু হলে কাজ করবে না। আমি কোনও ফোল্ডারে কোনও * .exe ফাইল আছে কিনা তা নির্ধারণ করার চেষ্টা করছি এবং আমার কাছে কেবল একটি * .exe_ ফাইল রয়েছে, তবে ক্যোয়ারীটি এটি ফিরিয়ে দিয়েছে, যা সঠিক নয়।
অ্যাড্রিয়ান


আমি যদি এমন একক ফাইলটি চাই যার নাম দেওয়া হয়েছেmacos.txt
প্রশান্ত পিম্পলে

আমি কোনও এক্সটেনশন ছাড়াই সমস্ত ফাইল সন্ধান করতে চাই। আমার কাছে ফাইল টাইপ "ফাইল" (কোনও এক্সটেনশন নেই) আছে, আমি কীভাবে এই ফাইলগুলি সন্ধান করতে পারি?
সোহাইবি

31

আপনি ডিরেক্টরি ক্লাস ব্যবহার করতে পারে

 Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)

4
কাজ না যদি এক্সটেনশানটি txt_ বা অন্য কিছু ভালো কিছু হবে যেমন ডকুমেন্টেশন বিবৃত করে msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx
রান্ডাল Flagg

14

আসলে এটি বেশ সহজ। আপনি System.IO.Directoryএকসাথে ক্লাস ব্যবহার করতে পারেন System.IO.Path। এর মতো কিছু (লিনকিউ ব্যবহার করা আরও সহজ করে তোলে):

var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));

// Get all filenames that have a .txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt")
                             .Select(fn => Path.GetFileNameWithoutExtension(fn));

অবশ্যই এই কৌশলটিতে অনেক বৈচিত্র রয়েছে। আপনার ফিল্টারটি সহজ হলে অন্য কয়েকটি উত্তর সহজতর হয়। এই একটির বিলম্বিত গণনার সুবিধা রয়েছে (যদি তা বিবেচনা করা হয়) এবং আরও কোড ব্যয়ে আরও নমনীয় ফিল্টারিং।


আপনি এতে যে সমস্ত অতিরিক্ত কাজ দিয়েছেন তার জন্য ধন্যবাদ। তবে আমি কেবল একটি সরল বিবৃতিতে যাচ্ছি যেহেতু আমার কাছে ডিরেক্টরিতে কেবল একটি পাঠ্য ফাইল রয়েছে (এটি আমার প্রোগ্রাম দ্বারা বের করা হয়েছিল)।
ডোমিনিক কে

3

নীচের পদ্ধতিটি কেবলমাত্র নির্দিষ্ট এক্সটেনশানযুক্ত ফাইলগুলি ফেরত দেয় (যেমন: .txt সহ ফাইল তবে .txt1 নয়)

public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
    {
        return
            Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption)
                .Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
    }

1

আমার বোঝাপড়া অনুযায়ী, এটি দুটি উপায়ে করা যেতে পারে:

1) আপনি আমাদের প্রয়োজনীয় এক্সটেনশনটি পরীক্ষা করতে গেটফাইলস পদ্ধতি সহ ডিরেক্টরি ক্লাস ব্যবহার করতে পারেন এবং সমস্ত ফাইলগুলিতে অতিক্রম করতে পারেন।

ডিরেক্টরি.গেটফাইলস ("আপনার_ফোল্ডার_পাথ) [i]। কন্টেন্টস (" *। Txt ")

2) আপনি গেটএক্সটেনশন পদ্ধতি সহ পাথ ক্লাস ব্যবহার করতে পারেন যা ফাইলের প্যারামিটার হিসাবে নেয় এবং এক্সটেনশনটি যাচাই করে the ফাইলের পাথ পেতে, কেবল একটি লুপিং শর্ত রয়েছে যা একটি ফাইল আনবে এবং যাচাইকরণের জন্য ব্যবহৃত ফাইলপথটি ফিরিয়ে দেবে।

পাথ.গেট এক্সটেনশন (আপনার_ফাইলে_পাথ)। সমীকরণ ("। জেসন")

দ্রষ্টব্য: উভয় যুক্তিই একটি লুপিং শর্তের মধ্যে থাকতে হবে।


-1

সমস্ত ধরণের এক্সটেনশন ফাইল সহ পঠন ফাইলের জন্য এই কোডটি ব্যবহার করুন।

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.