ফাইলের নাম সহ ফাইলের নাম ছাড়াই পুরো পাথ পান


198

এমন কিছু আছে System.IO.Pathযা আমাকে কেবল ফাইলপথ দেয়?

উদাহরণস্বরূপ, আমি যদি একটি string

@ "C: \ ওয়েবসার্ভার \ সর্বজনীন \ myCompany \ configs \ promo.xml",

কোন বিসিএল পদ্ধতি আছে যা আমাকে দেবে?

"সি: \ ওয়েবসার্ভার \ সর্বজনীন \ myCompany \ configs \"?



এফডাব্লুআইডাব্লু: আমি "পাথগুলি" পরিচালনা করার পথে "ছেড়ে দিয়েছি" এবং আমরা ইউএনসির সাথে আরও ভাল প্রত্যাশা এবং একতা নিয়ে আমাদের নিজস্ব পদ্ধতিগুলি ব্যবহার করি (একটি ইউএনসি পাথের উপর গেটডাইরেক্টরি নাম ব্যবহার করার চেষ্টা করুন) এবং সম্মেলনগুলি (উদাহরণস্বরূপ ট্রেলিং /)।
ব্যবহারকারী 2864740

ফাইল বা ডিরেক্টরি উপস্থিত না থাকলে, promo.xmlসেই একই নামে কোনও ফাইল বা ডিরেক্টরি নির্ধারণ করে কিনা তা জানার উপায় নেই । সম্ভবত এটিই কেন Path.GetDirectoryName()এত সহজ বাস্তবায়িত হয় এবং কেবলমাত্র শেষ বিভাগটিকে ছাঁটাই করে, বা যদি সেখানে থাকে তবে অনুসরণকারী স্ল্যাশ সরিয়ে দেয়।
আবেল

উত্তর:


241

Path.GetDirectoryName()... তবে আপনাকে জানতে হবে যে আপনি যে পথে যাচ্ছেন তাতে একটি ফাইলের নাম রয়েছে; এটি কেবল ফাইলের নাম বা ডিরেক্টরি নাম কিনা তা পথ থেকে চূড়ান্ত বিটটি সরিয়ে দেয় (এটি আসলে কোন ধারণাই নেই)।

আপনি কল করার দরকার আছে কিনা তা পরীক্ষা করে আপনি প্রথমে পরীক্ষা করে File.Exists()এবং / অথবা Directory.Exists()আপনার পথে প্রথমে বৈধতা দিতে পারেনPath.GetDirectoryName


2
কল করার দরকার নেই File.Exists()। প্রকৃতপক্ষে, এটি ক্ষেত্রে ক্ষেত্রে পরিবর্তনের কারণ যেখানে ডিরেক্টরিটির নাম সন্ধানের জন্য যুক্তি এটি ইতিমধ্যে উপস্থিত না থাকলে এটি তৈরি করা।
জন হান্না

3
তার উদাহরণটি স্পষ্টভাবে একটি ফাইলের নাম সহ একটি পাথ নোট করে। যদি সে সেই পরীক্ষাগুলির জন্য যে পাথগুলির নিদর্শন হয় এবং যদি সেই পাথগুলি বিদ্যমান ফাইলগুলিকে প্রতিনিধিত্ব করে তবে ফাইল পরীক্ষা করা Eএক্সিস্টগুলি () অবশ্যই কার্যকর হবে, আপনি কি তাতে একমত হবেন না? কারণ পরিস্থিতি অন্যথায় হতে পারে, অবশ্যই, আমি কেবলমাত্র তিনি পরামর্শ দিচ্ছিলেন তিনি ফাইল এবং / অথবা ডিরেক্টরিতে বিদ্যমান পদ্ধতিগুলি 'ব্যবহার' করতে পারেন; স্পষ্টতই, তার পরিস্থিতির জন্য উপযুক্ত।
অ্যান্ড্রু নাপিত

হ্যাঁ, একটি ফাইলের নাম সহ একটি পথ। ফাইলের নাম উপস্থিত হওয়ার সাথে সাথে কোনও ফাইল উপস্থিত থাকার নির্দেশ করার মতো কিছুই নেই।
জন হান্না

4
আমি যেমন বলেছি; এটি একটি বিকল্প এবং পথ সম্পর্কে যা জানা যায় তার উপর নির্ভর করে এটি সহায়তা করতে পারে। অথবা এটি একেবারেই প্রয়োজন হতে পারে না। কিন্তু একই পথের ফাইল.এক্সিস্টগুলি () এবং ডিরেক্টরি.এক্সজিস্টগুলি () পরীক্ষা করা একটি পাথ, যা বিদ্যমান তা কোনও ফাইল বা ডিরেক্টরি কিনা তা জানতে একটি দ্রুত এবং সহজ উপায়।
অ্যান্ড্রু বারবার

5
একটি দ্রুত রেফারেন্স হিসাবে, প্রশ্নের সাথে অনর্থক এবং "সুস্পষ্ট" ট্রিট হিসাবে, আপনাকে System.IOএটি কাজ করার জন্য অন্তর্ভুক্ত করতে হবে ।
ক্রেগক্স


51

Path.GetDirectoryName()ডিরেক্টরিটির নামটি দেয়, তাই আপনি যা চান তার জন্য (পিছনের বিপরীত কঠিন চরিত্রের সাথে) আপনি কল করতে পারেন Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar


12
    string fileAndPath = @"c:\webserver\public\myCompany\configs\promo.xml";

    string currentDirectory = Path.GetDirectoryName(fileAndPath);

    string fullPathOnly = Path.GetFullPath(currentDirectory);

কারেন্টডাইরেক্টরি: সি: ser ওয়েবসভার \ পাবলিক \ মাইকম্পানি \ কনফিগারেশন

ফুলপ্যাথঅনলি: সি: ser ওয়েবসভার \ পাবলিক \ মাইকম্পানি \ কনফিগারেশন


6
এই উত্তরটির উন্নতি করতে দয়া করে উপরের কোডটি কীভাবে প্রশ্নের উত্তর দেয় সে সম্পর্কে কিছু তথ্য সরবরাহ করুন।
এরিক হাউসটাইন

1
পথ.গেটফুলপথ ফাইল নাম ছাড়াই পূর্ণপথ ফেরত দেয়।
কোবি উইলিয়ামস 21

আউটপুটটি দেখানো সহায়ক হবে, শেষ দুটি লাইনের মধ্যে পার্থক্য কী তা আমার কোনও ধারণা নেই।
গেকেরা

আউটপুটটি হবে -> সি: ser ওয়েবসভার \ পাবলিক \ মাইকম্পানি \ কনফিগারেশন
কোবি উইলিয়ামস

5

প্রদর্শিত হিসাবে 'গেটপ্যারেন্ট ()' ব্যবহার করুন, দুর্দান্ত কাজ করে। আপনার প্রয়োজন অনুসারে পরীক্ষায় ত্রুটি যুক্ত করুন।

var fn = openFileDialogSapTable.FileName;
var currentPath = Path.GetFullPath( fn );
currentPath = Directory.GetParent(currentPath).FullName;

4

আমি এটি ব্যবহার করেছি এবং এটি ভালভাবে কাজ করে:

string[] filePaths = Directory.GetFiles(Path.GetDirectoryName(dialog.FileName));

foreach (string file in filePaths)
{   
    if (comboBox1.SelectedItem.ToString() == "")
    {
        if (file.Contains("c"))
        {
            comboBox2.Items.Add(Path.GetFileName(file));
        }
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.