Compartilhar via


Como: criar um arquivo ou pasta (guia de programação do C#)

Você pode criar programaticamente uma pasta no seu computador, criar uma sub pasta, crie um arquivo em sub pasta, e gravar dados para o arquivo.

Exemplo

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
}

Se a pasta já existir, CreateDirectory não fará nada, e nenhuma exceção é lançada.No entanto, File.Create substitui um arquivo existente com um novo arquivo.O exemplo usa uma instrução de if- deelse para impedir que um arquivo existente é substituído.

Fazendo as seguintes alterações no exemplo, você pode especificar os resultados diferentes com base em se um arquivo com um determinado nome já existe.Se esse arquivo não existir, o código cria um.Se um arquivo existe, o código adiciona dados ao arquivo.

  • Especifique um nome de arquivo não aleatório.

    // Comment out the following line.
    //string fileName = System.IO.Path.GetRandomFileName();
    
    // Replace that line with the following assignment.
    string fileName = "MyNewFile.txt";
    
  • Substitua a declaração de if- deelse com a instrução de using no código a seguir.

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

Executar o exemplo várias vezes verificar que os dados sejam adicionados ao arquivo cada vez.

Para mais valores de FileMode que você pode tentar, consulte FileMode.

As seguintes condições podem causar uma exceção:

  • O nome da pasta é incorreto.Por exemplo, contém caracteres inválidos ou é somente espaço em branco (classe) deArgumentException .Use a classe de Path para criar nomes de caminho válido.

  • A pasta pai do diretório a ser criado é somente leitura (classe) deIOException .

  • O nome da pasta é null deArgumentNullException (classe).

  • O nome da pasta é muito longo (classe) dePathTooLongException .

  • O nome da pasta é apenas dois-pontos “:,” (classe) dePathTooLongException .

Segurança

Uma instância da classe de SecurityException pode ser lançada em situações de confiança parcial.

Se você não tiver permissão para criar a pasta, o exemplo gera uma instância da classe de UnauthorizedAccessException .

Consulte também

Referência

System.IO

Conceitos

Guia de programação do C#

Outros recursos

Sistema de arquivos e registro (guia de programação do C#)