O tempo de execução oferece a você recursos para trabalhar com diretórios no sistema de arquivos local.
Para obter detalhes sobre a criação de objetos File que apontam para diretórios, consulte
Como apontar um objeto File para um diretório
.
Criação de diretórios
O método
File.createDirectory()
permite criar um diretório. Por exemplo, o código a seguir cria um diretório com nome AIR Test como um subdiretório do diretório inicial do usuário:
var dir:File = File.userDirectory.resolvePath("AIR Test");
dir.createDirectory();
Se o diretório existir, o método
createDirectory()
não faz nada.
Além disso, em alguns modos, o objeto FileStream cria diretórios ao abrir arquivos. Diretórios ausentes são criados quando você cria uma ocorrência FileStream com o parâmetro
fileMode
do construtor
FileStream()
definido como
FileMode.APPEND
ou
FileMode.WRITE
. Para obter mais informações, consulte
Fluxo de trabalho de leitura e gravação de arquivos
.
Criação de diretório temporário
A classe File inclui o método
createTempDirectory()
, que cria um diretório na pasta de diretórios temporários do Sistema, como no exemplo a seguir:
var temp:File = File.createTempDirectory();
O método
createTempDirectory()
cria automaticamente um diretório temporário exclusivo (poupando o seu trabalho de determinar um novo local exclusivo).
Você pode usar um diretório temporário para armazenar temporariamente arquivos temporários usados em uma sessão do aplicativo. Observe que há um método
createTempFile()
para criar arquivos temporários novos e exclusivos no diretório temporário System.
Pode ser conveniente excluir o diretório temporário antes de fechar o aplicativo, uma vez que ele
não
é excluído automaticamente em todos os dispositivos.
Enumeração de diretórios
Você pode usar o método
getDirectoryListing()
ou o método
getDirectoryListingAsync()
do objeto File para obter uma matriz de objetos File apontando para arquivos e subpastas em um diretório.
Por exemplo, o código a seguir lista o conteúdo do diretório de documentos do usuário (sem examinar subdiretórios):
var directory:File = File.documentsDirectory;
var contents:Array = directory.getDirectoryListing();
for (var i:uint = 0; i < contents.length; i++)
{
trace(contents[i].name, contents[i].size);
}
Ao usar a versão assíncrona do método, o objeto de evento
directoryListing
terá a propriedade
files
que é a matriz de objetos File pertencentes aos diretórios:
var directory:File = File.documentsDirectory;
directory.getDirectoryListingAsync();
directory.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler);
function dirListHandler(event:FileListEvent):void
{
var contents:Array = event.files;
for (var i:uint = 0; i < contents.length; i++)
{
trace(contents[i].name, contents[i].size);
}
}
Cópia e movimentação de diretórios
Você pode copiar ou mover o diretório, usando os mesmos métodos utilizados para copiar ou mover um arquivo. Por exemplo, o código a seguir copia um diretório de forma síncrona:
var sourceDir:File = File.documentsDirectory.resolvePath("AIR Test");
var resultDir:File = File.documentsDirectory.resolvePath("AIR Test Copy");
sourceDir.copyTo(resultDir);
Quando você especifica true para o parâmetro
overwrite
do método
copyTo()
, todos arquivos e pastas em um diretório de destino existente são excluídos e substituídos pelos arquivos e pastas no diretório de origem (mesmo se o arquivo de destino não existir no diretório de origem).
O diretório especificado como o parâmetro
newLocation
do método
copyTo()
especifica o caminho para o diretório resultante; ele
não
especifica o diretório
pai
que conterá o diretório resultante.
Para obter detalhes, consulte
Cópia e movimentação de arquivos
.
Exclusão de conteúdo do diretório
A classe File inclui os métodos
deleteDirectory()
e
deleteDirectoryAsync()
. Esses métodos excluem diretórios; o primeiro trabalha de forma síncrona, o segundo trabalha de forma assíncrona (consulte
Noções básicas do arquivo AIR
). Os dois métodos incluem o parâmetro
deleteDirectoryContents
(com um valor Booliano); quando esse parâmetro estiver definido como
true
(o valor padrão será
false
) a chamada do método excluirá diretórios não vazios; caso contrário, apenas diretórios vazios serão excluídos.
Por exemplo, o código a seguir exclui de modo síncrono o subdiretório AIR Test do diretório de documentos do usuários:
var directory:File = File.documentsDirectory.resolvePath("AIR Test");
directory.deleteDirectory(true);
O código a seguir exclui de modo assíncrono o subdiretório AIR Test do diretório de documentos do usuário:
var directory:File = File.documentsDirectory.resolvePath("AIR Test");
directory.addEventListener(Event.COMPLETE, completeHandler)
directory.deleteDirectoryAsync(true);
function completeHandler(event:Event):void {
trace("Deleted.")
}
Também estão incluídos os métodos
moveToTrash()
e
moveToTrashAsync()
, que você pode usar para mover um diretório para a lixeira do Sistema. Para obter detalhes, consulte
Movimentação de arquivo para a lixeira
.
|
|
|