Dizinlerle çalışma

Adobe AIR 1.0 ve üstü

Çalışma zamanı size yerel dosya sistemindeki dizinlerle çalışmaya yönelik özellikler sağlar.

Dizinlere işaret eden File nesneleri oluşturma hakkında bilgi için bkz. File nesnesini bir dizine işaret etme.

Dizin oluşturma

File.createDirectory() yöntemi bir dizin oluşturmanızı sağlar. Örneğin aşağıdaki kod, kullanıcının ana dizininin alt dizini olarak AIR Test adlı bir dosya oluşturur.

var dir:File = File.userDirectory.resolvePath("AIR Test"); 
dir.createDirectory(); 

Dizin varsa, createDirectory() yöntemi bir işlem gerçekleştirmez.

Ayrıca bazı modlarda FileStream nesnesi dosyaları açarken dizin oluşturur. Bir FileStream örneğini FileMode.APPEND veya FileMode.WRITE olarak ayarlı FileStream() yapıcı kümesinin fileMode parametresiyle başlattığınızda, eksik dizinler oluşturulur. Daha fazla bilgi için bkz. Dosyaları okuma ve dosyalara yazma için iş akışı.

Geçici bir dizin oluşturma

File sınıfı, aşağıdaki örnekte olduğu gibi Sistem için geçici bir dizin klasöründe bir dizin oluşturan createTempDirectory() yöntemini içerir.

var temp:File = File.createTempDirectory(); 

createTempDirectory() yöntemi otomatik olarak benzersiz bir geçici dizin oluşturur. (Yeni bir benzersiz konum belirlemekle uğraşmamış olursunuz.)

Geçici bir dizini, bir uygulama oturumu için kullanılan geçici dosyaları geçici olarak saklamak için kullanabilirsiniz. Sistem geçici dizininde yeni, benzersiz geçici dosyalar oluşturmak için bir createTempFile() yöntemi bulunduğunu unutmayın.

Tüm aygıtlarda otomatik olarak silinmediğinden, uygulamayı kapatmadan önce geçici dizini silmek isteyebilirsiniz.

Dizinleri numaralandırma

Bir dizindeki dosyalara ve alt klasörlere işaret eden bir File nesneleri dizisini almak için, File nesnesinin getDirectoryListing() veya getDirectoryListingAsync() yöntemini kullanabilirsiniz.

Örneğin aşağıdaki kod kullanıcının documents dizininin (alt dizinleri incelemeden) içeriğini listeler.

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);  
} 

Yöntemin senkronize olmayan sürümünü kullanırken, directoryListing olay nesnesi, dizinlerle ilgili File nesnelerinin dizisi olan bir files özelliğine sahiptir:

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);  
    } 
} 

Dizinleri kopyalama ve taşıma

Bir dizini, bir dosyayı kopyalamak veya taşımak için kullanacağınız yöntemlerin aynılarını kullanarak kopyalayabilir veya taşıyabilirsiniz. Örneğin aşağıdaki kod bir dizini senkronize olarak kopyalar:

var sourceDir:File = File.documentsDirectory.resolvePath("AIR Test"); 
var resultDir:File = File.documentsDirectory.resolvePath("AIR Test Copy"); 
sourceDir.copyTo(resultDir); 

copyTo() yönteminin overwrite parametresi için true değerini belirttiğinizde, mevcut bir hedef dizindeki tüm dosyalar ve klasörler silinir ve yerine kaynak dizindeki dosyalar ve klasörler konur (hedef dosya kaynak dizinde olmasa bile).

copyTo() yönteminin newLocation parametresi olarak belirttiğiniz dizin, sonuçta oluşan dizinin yolunu belirtir; sonuçta oluşan dizini içerecek olan üst dizini belirtmez.

Ayrıntılar için bkz. Dosyaları kopyalama ve taşıma.

Dizin içeriğini silme

File sınıfı bir deleteDirectory() ve bir deleteDirectoryAsync() yöntemi içerir. İlki senkronize, ikincisi senkronize olmayan bir şekilde çalışan bu yöntemler dizinleri siler (bkz. AIR dosyası temel bilgileri). Her iki yöntem de deleteDirectoryContents parametresini içerir (Boolean değeri alır); bu parametre true olarak ayarlıyken (varsayılan değer false değeridir) yönteme yapılan çağrı boş olmayan dizinleri siler; aksi takdirde yalnızca boş dizinler silinir.

Örneğin aşağıdaki kod kullanıcının documents dizininin AIR Test alt dizinini senkronize olarak siler:

var directory:File = File.documentsDirectory.resolvePath("AIR Test"); 
directory.deleteDirectory(true); 

Aşağıdaki kod kullanıcının documents dizininin AIR Test alt dizinini senkronize olmayan bir şekilde siler:

var directory:File = File.documentsDirectory.resolvePath("AIR Test"); 
directory.addEventListener(Event.COMPLETE, completeHandler) 
directory.deleteDirectoryAsync(true); 
 
function completeHandler(event:Event):void { 
    trace("Deleted.") 
} 

Ayrıca, bir dizini Sistem çöp kutusuna taşımak için kullanabileceğiniz moveToTrash() ve moveToTrashAsync() yöntemleri de bulunmaktadır. Ayrıntılar için bkz. Bir dosyayı çöp kutusuna taşıma.