ফোল্ডারগুলির অস্তিত্ব না থাকলে আমি কীভাবে একটি ফাইল এবং কোনও ফোল্ডার তৈরি করব?


136

কল্পনা করুন আমি নিম্নলিখিত ফাইলটি তৈরি করতে (বা ওভাররাইট) করতে চাই: - C:\Temp\Bar\Foo\Test.txt

ফাইল.ক্রিয়েট (..) ব্যবহার করে পদ্ধতি এটি এটি করতে পারে।

তবে, যদি আমার নীচেরগুলির মধ্যে একটিও না থাকে (উপরের উদাহরণের দিক থেকে)

  • টেম্প
  • বার
  • foo বিন্যাস

তারপরে আমি একটি ডিরেক্টরি নটফাউন্ডএক্সসেপশন পেয়েছি ।

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

সরলতার জন্য, ধরে নেওয়া যাক সুরক্ষার কোনও উদ্বেগ নেই - সমস্ত অনুমতিগুলি ঠিক আছে, ইত্যাদি lets



উত্তর:


122
DirectoryInfo di = Directory.CreateDirectory(path);
Console.WriteLine("The directory was created successfully at {0}.",
    Directory.GetCreationTime(path));

দেখুন এই দুটিই MSDN পৃষ্ঠা

আশা করি যে সাহায্য করে!


82
আপনি প্রথমে চেক Directory.CreateDirectoryছাড়া অন্ধভাবে কল করতে পারেন Directory.Exists- ডিরেক্টরিটি ইতিমধ্যে সেখানে থাকলে এটি ছুঁড়ে না।
টিম রবিনসন

1
@ টিম: নিশ্চিত ছিল না তাই আমি এটিকে যে কেউ সেখানে ফেলে দিয়েছি। যাই হোক তথ্যের জন্য ধন্যবাদ.
ক্রিস্টোফার বি অ্যাডকিনস

24
এবং Path.GetDirectoryName(string path)আপনার পুরো পথ থেকে ডিরেক্টরিটি পেতে ভুলে যাবেন না
অলিভার

@ অলিভার: একটি সম্পূর্ণ কার্যকারিতা রয়েছে যা ডিরেক্টরি এবং ডিরেক্টরি ইনফোর ক্লাসের সাথে চলে, তবে আমি যে কোডটি দিয়েছি তা তাকে সঠিক দিকের দিকে ধাক্কা দেওয়ার জন্য যথেষ্ট ছিল। আমি মনে করি লিঙ্কটিও কিছুটা প্রসারিত হয়েছে।
ক্রিস্টোফার বি। অ্যাডকিনস

8
* দ্রষ্টব্য: চলকটিতে pathফাইলের নাম থাকা উচিত নয়। সুতরাং ওপির উদাহরণটি ব্যবহার করা pathউচিত C:\Temp\Bar\Foo। কলিং পর Directory.CreateDirectory(path);আপনি এখনও ফোন করতে হবে File.Create("C:\Temp\Bar\Foo\Test.txt");ফাইল তৈরি করতে।
sazr

139

অন্যান্য উত্তরে কি মন্তব্য করা হয়েছে তা সংক্ষিপ্ত করতে:

//path = @"C:\Temp\Bar\Foo\Test.txt";
Directory.CreateDirectory(Path.GetDirectoryName(path));

Directory.CreateDirectory ডিরেক্টরিগুলি পুনরাবৃত্তভাবে তৈরি করবে এবং ডিরেক্টরিটি ইতিমধ্যে উপস্থিত থাকলে এটি ত্রুটি ছাড়াই ফিরে আসবে।

যদি কোনও ঘটনা ঘটে থাকে Fooতবে C:\Temp\Bar\Fooএকটি ব্যতিক্রম নিক্ষেপ করা হবে।


আপনি দীর্ঘ পথ সঙ্গে তার আচরণ করেন (256+) দেখতে stackoverflow.com/questions/5188527/...
আলেক্সেই Levenkov


3

। একটি পাথ দেওয়া হয়েছে, আমরা কীভাবে পুনরাবৃত্তভাবে ফাইলটি তৈরি করতে প্রয়োজনীয় সমস্ত ফোল্ডার তৈরি করতে পারি .. সেই পথের জন্য

পাথ দ্বারা নির্দিষ্ট হিসাবে সমস্ত ডিরেক্টরি এবং উপ-ডিরেক্টরি তৈরি করে।

Directory.CreateDirectory(path);

তারপরে আপনি একটি ফাইল তৈরি করতে পারেন।


2
ফাইল নাম ছাড়া পাথ :)
সামিরা আর।

"সমস্ত ডিরেক্টরি এবং উপ-ডিরেক্টরি" ভুল: এটি সর্বাধিকপক্ষে একটি ডিরেক্টরি এবং সমস্ত প্রয়োজনীয় উপ-ডিরেক্টরি তৈরি করবে।
ক্যামিলো তেরেভিনটো

3

আপনাকে পথের উভয় অংশ (ডিরেক্টরি এবং ফাইলের নাম) যাচাই করতে হবে এবং এটি উপস্থিত না থাকলে প্রতিটি তৈরি করতে হবে।

সেগুলি বিদ্যমান কিনা তা ব্যবহার করুন File.Existsএবং Directory.Existsতা অনুসন্ধান করুন । Directory.CreateDirectoryআপনার জন্য পুরো পথ তৈরি করবে, সুতরাং আপনাকে কেবল কখনও কল করতে হবে যদি একবার ডিরেক্টরি উপস্থিত না থাকে তবে কেবল ফাইলটি তৈরি করুন।


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

আমি আপনাকে প্রথমে উত্তরটি সরিয়ে দেওয়ার পরামর্শ দিচ্ছি যেহেতু তাকে প্রতিটি অংশ মূল থেকে পরীক্ষা করার দরকার নেই, কেবল সম্পূর্ণ পথটি পরীক্ষা করে দেখুন এবং এটি উপস্থিত না থাকলে এটি তৈরি করুন।
জার্মটান

@ জার্মটজান - উত্তর আপডেট হয়েছে ... আশা করি এটি এখন আপনার মানদণ্ডগুলি পূরণ করে;)
ওডে

:) এটি করে :) :) আপনাকে ভুল প্রমাণ করা বা আপনাকে আপত্তি জানানো আমার বক্তব্য ছিল না, তবে নতুনরা উত্তরগুলিতে কোনও স্পষ্টতা ব্যবহার করতে পারে)
জার্মটান

2

আপনার ডিরেক্টরি। ক্রিয়েট ডিরেক্টরী ব্যবহার করা উচিত।

http://msdn.microsoft.com/en-us/library/54a0at6s.aspx


মন্তব্যসমূহ: পথে নির্দিষ্ট করা যে কোনও এবং সমস্ত ডিরেক্টরি তৈরি করা হয়েছে ... আহ! চিয়ার্স :)
খাঁটি.ক্রোম

0

আপনি ডিরেক্টরি চান। ক্রিয়েট ডিরেক্টরী ()

এখানে আমি ব্যবহার করছি এমন একটি শ্রেণি (সি # তে রূপান্তরিত) যা আপনি এটি একটি উত্স ডিরেক্টরি এবং কোনও গন্তব্যস্থলে পাস করলে এটি সেই ডিরেক্টরিটির সমস্ত ফাইল এবং উপ-ফোল্ডারগুলি আপনার গন্তব্যে অনুলিপি করবে:

using System.IO;

public class copyTemplateFiles
{


public static bool Copy(string Source, string destination)
{

    try {

        string[] Files = null;

        if (destination[destination.Length - 1] != Path.DirectorySeparatorChar) {
            destination += Path.DirectorySeparatorChar;
        }

        if (!Directory.Exists(destination)) {
            Directory.CreateDirectory(destination);
        }

        Files = Directory.GetFileSystemEntries(Source);
        foreach (string Element in Files) {
            // Sub directories
            if (Directory.Exists(Element)) {
                copyDirectory(Element, destination + Path.GetFileName(Element));
            } else {
                // Files in directory
                File.Copy(Element, destination + Path.GetFileName(Element), true);
            }
        }

    } catch (Exception ex) {
        return false;
    }

    return true;

}



private static void copyDirectory(string Source, string destination)
{
    string[] Files = null;

    if (destination[destination.Length - 1] != Path.DirectorySeparatorChar) {
        destination += Path.DirectorySeparatorChar;
    }

    if (!Directory.Exists(destination)) {
        Directory.CreateDirectory(destination);
    }

    Files = Directory.GetFileSystemEntries(Source);
    foreach (string Element in Files) {
        // Sub directories
        if (Directory.Exists(Element)) {
            copyDirectory(Element, destination + Path.GetFileName(Element));
        } else {
            // Files in directory
            File.Copy(Element, destination + Path.GetFileName(Element), true);
        }
    }

}

}


2
এই রেখার কারণে আমার এটি ডাউনগ্রেড করা উচিত: using Microsoft.VisualBasic;অশুভ !!
খাঁটি.ক্রোম

2
এবং মাইক্রোসফ্ট.ভিউজুয়াল বেসিক দুষ্ট কেন ?? এটি নেট ফ্রেমওয়ার্কের অন্য কারোর মতো সমাবেশ।
অলিভার

2
আমি মনে করি কারণ আপনি অকারণে পুরো অন্যান্য ভাষার নামস্থান আমদানি করছেন ..?
মার্কিভ

0

ধরে নিই যে আপনার সমাবেশ / এক্সেপিতে ফাইলআইওর অনুমতি আছে , এটি ঠিক নয়। আপনার অ্যাপ্লিকেশন অ্যাডমিন অধিকারের সাথে চলতে পারে না। কোড অ্যাক্সেস সুরক্ষা এবং অনুমতিগুলির জন্য অনুরোধের নমুনা কোড বিবেচনা করা এটি গুরুত্বপূর্ণ :

FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}

.NET কোড অ্যাক্সেস সুরক্ষা বোঝা

কোনও বাস্তব বিশ্বের ব্যবহারের "কোড অ্যাক্সেস সুরক্ষা"?


1
@ পিওর.ক্রোম: যদিও আমার উত্তরটি লক্ষ্যমাত্রা ছাড়াই রয়েছে, তবুও সুবিধাভোগী সংস্থানগুলি অ্যাক্সেস করার সময় সুরক্ষা এবং অ্যাক্সেস নিয়ন্ত্রণ বিবেচনা করবেন না। কখনও কখনও আপনার প্রশ্নকে ছাড়িয়ে যাওয়া বা জটিল করার উদ্দেশ্যে নয় :)
PRR

0

আমি জানি যে এখানে আরও কিছু উত্তর রয়েছে তবে সেগুলির কোনওোটাই যথেষ্ট সম্পূর্ণ নয়, নিম্নলিখিত কোডগুলি ডিরেক্টরি তৈরি করবে (যদি না থাকে) এবং তারপরে ফাইলগুলি অনুলিপি করে

// using System.IO;

// for ex. if you want to copy files from D:\A\ to D:\B\
foreach (var f in Directory.GetFiles(@"D:\A\", "*.*", SearchOption.AllDirectories))
{
    var fi =  new FileInfo(f);
    var di = new DirectoryInfo(fi.DirectoryName);

    // you can filter files here
    if (fi.Name.Contains("FILTER")
    {
        if (!Directory.Exists(di.FullName.Replace("A", "B"))
        {                       
            Directory.CreateDirectory(di.FullName.Replace("A", "B"));           
            File.Copy(fi.FullName, fi.FullName.Replace("A", "B"));
        }
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.