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. Allerdings wird mit File.Create eine vorhandene Datei durch eine neue Datei ersetzt. Im Beispiel wird eine if-else-Anweisung verwendet, um zu verhindern, dass eine vorhandene Datei ersetzt wird.

Wenn Sie die folgenden Änderungen im Beispiel vornehmen, können Sie, je nachdem, ob eine Datei mit einem bestimmten Namen bereits vorhanden ist, unterschiedliche Ergebnisse erzeugen. Wenn eine solche Datei nicht vorhanden ist, erstellt der Code sie. Wenn eine solche Datei vorhanden ist, fügt der Code Daten an diese 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 im folgenden Code die if-else-Anweisung durch die using-Anweisung.

    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, um zu überprüfen, dass der Datei jedes Mal Daten hinzugefügt werden.

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

Die folgenden Bedingungen können einen Ausnahmefehler verursachen:

  • 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).

.NET Framework-Sicherheit

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

Wenn Sie keine Berechtigung zum Erstellen des Ordners haben, wird in dem Beispiel eine Instanz der UnauthorizedAccessException-Klasse ausgelöst.

Siehe auch

System.IO
C#-Programmierhandbuch
Das Dateisystem und die Registrierung (C#-Programmierhandbuch)