Nasıl yapılır: Dosya ve Klasör Oluşturma (C# Programlama Kılavuzu)

Programlı olarak bilgisayarınızda bir klasör oluşturun, bir alt klasör oluşturun, alt klasörde bir dosya oluşturun ve dosyaya veri yazın.

Örnek

public class CreateFileOrFolder
{
    static void Main()
    {
        // Specify a name for your top-level folder. 
        string folderName = @"c:\Top-Level Folder";

        // To create a string that specifies the path to a subfolder under your  
        // top-level folder, add a name for the subfolder to folderName. 
        string pathString = System.IO.Path.Combine(folderName, "SubFolder");

        // You can write out the path name directly instead of using the Combine 
        // method. Combine just makes the process easier. 
        string pathString2 = @"c:\Top-Level Folder\SubFolder2";

        // You can extend the depth of your path if you want to. 
        //pathString = System.IO.Path.Combine(pathString, "SubSubFolder");

        // Create the subfolder. You can verify in File Explorer that you have this 
        // structure in the C: drive. 
        //    Local Disk (C:) 
        //        Top-Level Folder 
        //            SubFolder
        System.IO.Directory.CreateDirectory(pathString);

        // Create a file name for the file you want to create.  
        string fileName = System.IO.Path.GetRandomFileName();

        // This example uses a random string for the name, but you also can specify 
        // a particular name. 
        //string fileName = "MyNewFile.txt";

        // Use Combine again to add the file name to the path.
        pathString = System.IO.Path.Combine(pathString, fileName);

        // Verify the path that you have constructed.
        Console.WriteLine("Path to my file: {0}\n", pathString);

        // Check that the file doesn't already exist. If it doesn't exist, create 
        // the file and write integers 0 - 99 to it. 
        // DANGER: System.IO.File.Create will overwrite the file if it already exists. 
        // This could happen even with random file names, although it is unlikely. 
        if (!System.IO.File.Exists(pathString))
        {
            using (System.IO.FileStream fs = System.IO.File.Create(pathString))
            {
                for (byte i = 0; i < 100; i++)
                {
                    fs.WriteByte(i);
                }
            }
        }
        else
        {
            Console.WriteLine("File \"{0}\" already exists.", fileName);
            return;
        }

        // Read and display the data from your file. 
        try
        {
            byte[] readBuffer = System.IO.File.ReadAllBytes(pathString);
            foreach (byte b in readBuffer)
            {
                Console.Write(b + " ");
            }
            Console.WriteLine();
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine(e.Message);
        }

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
    // Sample output: 

    // Path to my file: c:\Top-Level Folder\SubFolder\ttxvauxe.vv0 

    //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
    //30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 
    // 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8 
    //3 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
}

Klasör zaten varsa, CreateDirectory hiçbir şey yapmaz ve hiçbir özel durum atılmaz.Ancak, File.Create varolan dosyayı yeni bir dosya ile değiştirir.Örnekte, varolan bir dosyanın değiştirilmesini önlemek için bir if-else deyimi kullanılmaktadır.

Örnekte aşağıdaki değişiklikleri yaparak, daha önce belirli bir ada sahip dosyanın var olup olmadığına göre farklı sonuçlar belirtebilirsiniz.Böyle bir dosya yoksa, kod bir tane oluşturur.Böyle bir dosya varsa, kod verileri bu dosyaya ekler.

  • Rastgele olmayan bir dosya adı belirtin.

    // Comment out the following line.
    //string fileName = System.IO.Path.GetRandomFileName();
    
    // Replace that line with the following assignment.
    string fileName = "MyNewFile.txt";
    
  • if-else deyimini, aşağıdaki koddaki using deyimiyle değiştirin.

    using (System.IO.FileStream fs = new System.IO.FileStream(pathString, FileMode.Append)) 
    {
        for (byte i = 0; i < 100; i++)
        {
            fs.WriteByte(i);
        }
    }
    

Verinin her defasında dosyaya eklendiğini doğrulamak için örneği birkaç kere çalıştırın.

Deneyebileceğiniz daha fazla FileMode değeri için bkz. FileMode.

Aşağıdaki koşullar özel bir duruma neden olabilir:

  • Klasör adının biçimi yanlış.Örneğin geçersiz karakterler ya da yalnızca beyaz boşluk (ArgumentException sınıfı) içerir.Geçerli yol adları oluşturmak için Path sınıfını kullanın.

  • Oluşturulacak klasörün üst klasörü salt okunurdur (IOException sınıfı).

  • Klasör adı null (ArgumentNullException sınıf).

  • Klasör adı fazla uzun (PathTooLongException sınıfı).

  • Klasör adı yalnızca bir "iki nokta üst üste" işaretidir, ":" (PathTooLongException sınıfı).

Güvenlik

SecurityException sınıfı örneği, kısmi güven durumlarında oluşabilir.

Klasör oluşturma izniniz yoksa, örnek UnauthorizedAccessException sınıfının bir örneğini atar.

Ayrıca bkz.

Başvuru

System.IO

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

Dosya Sistemi ve Kayıt Defteri (C# Programlama Kılavuzu)