Imagine que desejo criar (ou substituir) o seguinte arquivo: - C:\Temp\Bar\Foo\Test.txt
Usando o método File.Create (..) , isso pode ser feito.
MAS, se eu não tiver uma das seguintes pastas (desse caminho de exemplo, acima)
- Temp
- Barra
- Foo
então recebo uma DirectoryNotFoundException lançada.
Então .. dado um caminho, como podemos criar recursivamente todas as pastas necessárias para criar o arquivo .. para esse caminho? Se as pastas Temp ou Bar existirem, mas Foo não ... então isso também será criado.
Para simplificar, vamos supor que não haja problemas de segurança - todas as permissões são boas etc.
c#
.net
file-access
Pure.Krome
fonte
fonte
Respostas:
Veja esta página do MSDN .
Espero que ajude!
fonte
Directory.CreateDirectory
sem oDirectory.Exists
cheque primeiro - ele não será emitido se o diretório já estiver lá.Path.GetDirectoryName(string path)
de obter o diretório do seu caminho completopath
não deve conter o nome do arquivo. Então, usando o exemplo do OPpath
deve serC:\Temp\Bar\Foo
. Depois de ligar,Directory.CreateDirectory(path);
você ainda precisa ligarFile.Create("C:\Temp\Bar\Foo\Test.txt");
para criar o arquivo.Para resumir o que foi comentado em outras respostas:
Directory.CreateDirectory
criará os diretórios recursivamente e, se o diretório já existir, ele retornará sem erro.Se houver um arquivo
Foo
emC:\Temp\Bar\Foo
uma exceção, será lançada.fonte
Use Directory.CreateDirectory antes de criar o arquivo. Ele cria a pasta recursivamente para você.
fonte
Cria todos os diretórios e subdiretórios, conforme especificado pelo caminho.
então você pode criar um arquivo.
fonte
Você precisará verificar as duas partes do caminho (diretório e nome do arquivo) e criar cada uma, caso não exista.
Use
File.Exists
eDirectory.Exists
para descobrir se eles existem.Directory.CreateDirectory
criará o caminho inteiro para você; portanto, você só precisará chamá-lo uma vez, se o diretório não existir, basta criar o arquivo.fonte
Você deve usar o Directory.CreateDirectory.
http://msdn.microsoft.com/en-us/library/54a0at6s.aspx
fonte
Você deseja Directory.CreateDirectory ()
Aqui está uma classe que eu uso (convertida em C #) que, se você passar um diretório de origem e um destino, ele copiará todos os arquivos e subpastas desse diretório para o seu destino:
}
fonte
using Microsoft.VisualBasic;
Mal !!Supondo que seu assembly / exe tenha a permissão FileIO , ele próprio não está certo. Seu aplicativo pode não ser executado com direitos de administrador. É importante considerar a Segurança de Acesso ao Código e solicitar permissões Código de exemplo:
Noções básicas sobre segurança de acesso ao código .NET
O “Code Access Security” é de alguma utilidade no mundo real?
fonte
Eu sei que existem algumas outras respostas aqui, mas nenhuma delas não está completa o suficiente, o código a seguir criará diretórios (se não existir) e depois copiará os arquivos .
fonte