Gewusst wie: Erstellen einer Datei oder eines Ordners (C#-Programmierhandbuch)How to: Create a File or Folder (C# Programming Guide)

Sie können einen Ordner auf dem Computer programmgesteuert erstellen, einen Unterordner erstellen, eine Datei im Unterordner erstellen und Daten in die Datei schreiben.You can programmatically create a folder on your computer, create a subfolder, create a file in the subfolder, and write data to the file.

BeispielExample

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.If the folder already exists, CreateDirectory does nothing, and no exception is thrown. Allerdings wird mit File.Create eine vorhandene Datei durch eine neue Datei ersetzt.However, File.Create replaces an existing file with a new file. Im Beispiel wird eine if-else-Anweisung verwendet, um zu verhindern, dass eine vorhandene Datei ersetzt wird.The example uses an if-else statement to prevent an existing file from being replaced.

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.By making the following changes in the example, you can specify different outcomes based on whether a file with a certain name already exists. Wenn eine solche Datei nicht vorhanden ist, erstellt der Code sie.If such a file doesn't exist, the code creates one. Wenn eine solche Datei vorhanden ist, fügt der Code Daten an diese Datei an.If such a file exists, the code appends data to that file.

  • Geben Sie einen nicht zufälligen Dateinamen an.Specify a non-random file name.

    // 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.Replace the if-else statement with the using statement in the following 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, um zu überprüfen, dass der Datei jedes Mal Daten hinzugefügt werden.Run the example several times to verify that data is added to the file each time.

Weitere FileMode-Werte, die Sie ausprobieren können, finden Sie unter FileMode.For more FileMode values that you can try, see FileMode.

Die folgenden Bedingungen können einen Ausnahmefehler verursachen:The following conditions may cause an exception:

  • Der Ordnername ist falsch formatiert.The folder name is malformed. Er enthält beispielsweise unzulässige Zeichen oder besteht nur aus Leerzeichen (ArgumentException-Klasse).For example, it contains illegal characters or is only white space (ArgumentException class). Verwenden Sie die Path-Klasse, um gültige Pfadnamen zu erstellen.Use the Path class to create valid path names.

  • Der übergeordnete Ordner des zu erstellenden Ordners ist schreibgeschützt (IOException-Klasse).The parent folder of the folder to be created is read-only (IOException class).

  • Der Ordnername ist null (ArgumentNullException-Klasse).The folder name is null (ArgumentNullException class).

  • Der Ordnername ist zu lang (PathTooLongException-Klasse).The folder name is too long (PathTooLongException class).

  • Der Ordnername besteht nur aus einem Doppelpunkt ":" (PathTooLongException-Klasse).The folder name is only a colon, ":" (PathTooLongException class).

.NET Framework-Sicherheit.NET Framework Security

Eine Instanz der SecurityException-Klasse kann in nur teilweise vertrauenswürdigen Umgebungen ausgelöst werden.An instance of the SecurityException class may be thrown in partial-trust situations.

Wenn Sie keine Berechtigung zum Erstellen des Ordners haben, wird in dem Beispiel eine Instanz der UnauthorizedAccessException-Klasse ausgelöst.If you don’t have permission to create the folder, the example throws an instance of the UnauthorizedAccessException class.

Siehe auchSee Also

System.IO
C#-ProgrammierhandbuchC# Programming Guide
Das Dateisystem und die Registrierung (C#-Programmierhandbuch)File System and the Registry (C# Programming Guide)