Periksa apakah folder ada di direktori dan buat menggunakan C #


100

Bagaimana cara memeriksa apakah direktori C:/berisi folder bernama MP_Upload, dan jika tidak ada, buat folder secara otomatis?

Saya menggunakan Visual Studio 2005 C #.

Jawaban:


210

Ini akan membantu:

using System.IO;
...

string path = @"C:\MP_Upload";
if(!Directory.Exists(path))
{
    Directory.CreateDirectory(path);
}

4
menggunakan System.IO; juga diwajibkan di awal
fnc12

169
using System.IO;
...

Directory.CreateDirectory(@"C:\MP_Upload");

Directory.CreateDirectory melakukan apa yang Anda inginkan: Ini membuat direktori jika belum ada. Tidak perlu melakukan pemeriksaan eksplisit terlebih dahulu.

Setiap dan semua direktori yang ditentukan dalam jalur dibuat, kecuali jika sudah ada atau kecuali beberapa bagian dari jalur tidak valid. Parameter jalur menentukan jalur direktori, bukan jalur file. Jika direktori sudah ada, metode ini tidak melakukan apa-apa.

(Ini juga berarti bahwa semua direktori di sepanjang jalur dibuat jika diperlukan: CreateDirectory(@"C:\a\b\c\d")cukup, bahkan jika C:\abelum ada.)


Izinkan saya menambahkan peringatan tentang pilihan direktori Anda, meskipun: Membuat folder tepat di bawah root partisi sistem C:\tidak disukai. Pertimbangkan untuk membiarkan pengguna memilih folder atau membuat folder di %APPDATA%atau %LOCALAPPDATA%sebagai gantinya (gunakan Environment.GetFolderPath untuk itu). Halaman MSDN dari Environment.SpecialFolder enumeration berisi daftar folder sistem operasi khusus dan tujuannya.


4
Saya sendiri tidak tahu itu; Saya merasa malu; Saya telah melakukan jika-tidak-ada-maka-buat selama bertahun-tahun.

10
Ini telah muncul di beberapa utas lainnya. Meskipun Anda tidak perlu memeriksanya, itu membuat maksud kode lebih jelas, semakin mudah dibaca oleh orang luar. Jadi menyimpan cek bisa menjadi hal yang baik.
Matt J.

6
@MattJ .: Dalam hal ini, saya lebih suka menambahkan komentar singkat daripada panggilan fungsi yang tidak berguna. Saya setuju bahwa perilaku ini tidak jelas, tetapi, di sisi lain, menamainya (lebih tepat) EnsureDirectoryExistsakan membuat metode ini lebih sulit ditemukan.
Heinzi

3
Sedikit catatan: Directory.CreateDirectoryakan muncul jika nama folder cocok dengan nama file yang ada.
Reza M.

11
if(!System.IO.Directory.Exists(@"c:\mp_upload"))
{
     System.IO.Directory.CreateDirectory(@"c:\mp_upload");
}

1
Ya, tentu saja, saya hanya menebak-nebak. Siapa yang mencoba mengingat setiap nama metode kecil ... Dan saya malas untuk menyalakan VS ... Inti dari ini - bagi saya - adalah membantu orang yang meminta dengan memberikan ide; jika mereka mengharapkan semua hal kecil ini ramah salin-tempel, maka ... Mereka harus berpikir sedikit juga, benar ... Diperbaiki: diubah Createmenjadi CreateDirectory:)

6

Ini seharusnya berhasil

if(!Directory.Exists(@"C:\MP_Upload")) {
    Directory.CreateDirectory(@"C:\MP_Upload");
}

1
using System;
using System.IO;
using System.Windows.Forms;

namespace DirCombination 
{
    public partial class DirCombination : Form
    {
        private const string _Path = @"D:/folder1/foler2/folfer3/folder4/file.txt";
        private string _finalPath = null;
        private string _error = null;

        public DirCombination()
        {
            InitializeComponent();

            if (!FSParse(_Path))
                Console.WriteLine(_error);
            else
                Console.WriteLine(_finalPath);
        }

        private bool FSParse(string path)
        {
            try
            {
                string[] Splited = path.Replace(@"//", @"/").Replace(@"\\", @"/").Replace(@"\", "/").Split(':');
                string NewPath = Splited[0] + ":";
                if (Directory.Exists(NewPath))
                {                    
                    string[] Paths = Splited[1].Substring(1).Split('/');

                    for (int i = 0; i < Paths.Length - 1; i++)
                    {
                        NewPath += "/";
                        if (!string.IsNullOrEmpty(Paths[i]))
                        {
                            NewPath += Paths[i];
                            if (!Directory.Exists(NewPath))
                                Directory.CreateDirectory(NewPath);
                        }
                    }

                    if (!string.IsNullOrEmpty(Paths[Paths.Length - 1]))
                    {
                        NewPath += "/" + Paths[Paths.Length - 1];
                        if (!File.Exists(NewPath))
                            File.Create(NewPath);
                    }
                    _finalPath = NewPath;
                    return true;
                }
                else
                {
                    _error = "Drive is not exists!";
                    return false;
                }
            }
            catch (Exception ex)
            {
                _error = ex.Message;
                return false;
            }
        }
    }
}

1
    String path = Server.MapPath("~/MP_Upload/");
    if (!Directory.Exists(path))
    {
        Directory.CreateDirectory(path);
    }

0

Anda dapat mencoba ini ..

using System.IO;string path = "C:\MP_Upload";if(!Directory.Exists(path)){
   Directory.CreateDirectory(path);}

ini adalah salinan langsung dari jawaban yang diterima dengan format yang buruk, bagaimana ini bisa meningkatkan SO?
Tarick Welling
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.