Partager via


Comment : créer un fichier ou un dossier (Guide de programmation C#)

Vous pouvez créer par programmation un dossier sur votre ordinateur, créer un sous-dossier, créer un fichier dans le sous-dossier, puis écrire les données dans le fichier.

Exemple

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
}

Si le dossier existe déjà, CreateDirectory est sans effet et aucune exception n'est levée. Toutefois, File.Create remplace un fichier existant par un nouveau fichier. L'exemple utilise une instruction if-else pour empêcher le remplacement d'un fichier existant.

En effectuant les modifications suivantes dans l'exemple, vous pouvez spécifier différentes issues suivant qu'un fichier d'un certain nom existe déjà. Si ce fichier n'existe pas, le code en crée un. Si ce fichier existe, le code y ajoute des données.

  • Spécifiez un nom de fichier non aléatoire.

    // Comment out the following line.
    //string fileName = System.IO.Path.GetRandomFileName();
    
    // Replace that line with the following assignment.
    string fileName = "MyNewFile.txt";
    
  • Remplacez l'instruction if-else par l'instruction using dans le code suivant.

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

Exécutez plusieurs fois l'exemple pour vérifier que les données sont ajoutées au fichier à chaque fois.

Pour d'autres valeurs FileMode que vous pouvez essayer, consultez FileMode.

Les conditions ci-dessous peuvent générer une exception.

  • Le nom de dossier est incorrect. Il contient par exemple des caractères non valides ou se compose uniquement d'un espace blanc (classe ArgumentException). Utilisez la classe Path pour créer des noms de chemin d'accès valides.

  • Le dossier parent du dossier à créer est en lecture seule (IOException, classe).

  • Le nom du dossier est null (classe ArgumentNullException).

  • Le nom du dossier est trop long (classe PathTooLongException).

  • Le nom du dossier se compose uniquement du signe deux-points ":" (classe PathTooLongException).

Sécurité

Une instance de la classe SecurityException peut être levée dans des situations où le niveau de confiance n'est pas total.

Si vous n'êtes pas autorisé à créer le dossier, l'exemple lève une instance de la classe UnauthorizedAccessException.

Voir aussi

Référence

System.IO

Concepts

Guide de programmation C#

Autres ressources

Système de fichiers et Registre (Guide de programmation C#)