Freigeben über


Gewusst wie: Erstellen einer Datei oder eines Ordners (C#-Programmierhandbuch)

Sie können einen Ordner auf dem Computer programmgesteuert erstellen, einen Unterordner erstellen, eine Datei im Unterordner erstellen, und Daten in die Datei schreiben.

Beispiel

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
}

Falls der Ordner bereits vorhanden ist, führt CreateDirectory keine Aktion aus, und es wird keine Ausnahme ausgelöst.jedoch ersetzt File.Create eine vorhandene Datei durch eine neue Datei.Im Beispiel wird eine ifelse-Anweisung, um eine vorhandene Datei an ersetzt werden.

Mithilfe der folgenden Änderungen im Beispiel vornehmen, können Sie unterschiedliche Ergebnisse auf Grundlage angeben, ob eine Datei mit einem bestimmten Namen bereits vorhanden ist.Wenn eine solche Datei nicht vorhanden ist, erstellt der Code ein.Wenn eine solche Datei vorhanden ist, fügt der Code Daten zu dieser Datei an.

  • Geben Sie einen nicht-zufälligen Dateinamen an.

    // Comment out the following line.
    //string fileName = System.IO.Path.GetRandomFileName();
    
    // Replace that line with the following assignment.
    string fileName = "MyNewFile.txt";
    
  • Ersetzen Sie die ifelse-Anweisung mit der using-Anweisung im folgenden Code.

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

Führen Sie das Beispiel mehrmals aus, sicherzustellen, dass Daten in die Datei jedes Mal hinzugefügt werden.

Weitere FileMode-Werte, die Sie versuchen können, finden Sie unter FileMode.

Unter den folgenden Bedingungen kann eine Ausnahme ausgelöst werden:

  • Der Ordnername ist falsch formatiert.Er enthält beispielsweise unzulässige Zeichen oder besteht nur aus Leerzeichen (ArgumentException-Klasse).Verwenden Sie die Path-Klasse, um gültige Pfadnamen zu erstellen.

  • Der übergeordnete Ordner des zu erstellenden Ordners ist schreibgeschützt (IOException-Klasse).

  • Der Ordnername ist null (ArgumentNullException-Klasse).

  • Der Ordnername ist zu lang (PathTooLongException-Klasse).

  • Der Ordnername besteht nur aus einem Doppelpunkt ":" (PathTooLongException-Klasse).

Sicherheit

Eine Instanz der - Klasse SecurityException wird in teilweise vertrauenswürdigen Umgebungen ausgelöst werden.

Wenn Sie nicht über die Berechtigung verfügen, den Ordner zu erstellen, löst das Beispiel eine Instanz der - Klasse UnauthorizedAccessException aus.

Siehe auch

Referenz

System.IO

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

Das Dateisystem und die Registrierung (C#-Programmierhandbuch)