Trabalho com diretórios

Adobe AIR 1.0 e posterior

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 .