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 #.

gymcode
sumber

Jawaban:

210

Ini akan membantu:

using System.IO;
...

string path = @"C:\MP_Upload";
if(!Directory.Exists(path))
{
    Directory.CreateDirectory(path);
}
cycaHuH
sumber
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.

Heinzi
sumber
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");
}

sumber
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");
}
kufi
sumber
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;
            }
        }
    }
}
Azam Rahimjonov
sumber
1
    String path = Server.MapPath("~/MP_Upload/");
    if (!Directory.Exists(path))
    {
        Directory.CreateDirectory(path);
    }
Ronaldo Albertini
sumber
0

Anda dapat mencoba ini ..

using System.IO;string path = "C:\MP_Upload";if(!Directory.Exists(path)){
   Directory.CreateDirectory(path);}
Ashish
sumber
ini adalah salinan langsung dari jawaban yang diterima dengan format yang buruk, bagaimana ini bisa meningkatkan SO?
Tarick Welling