-- Java SE

Delete – Copy – Move

Dosya,Dizin Silme

Files sınıfı silme işlemleri için iki metod sunar. Bir dizinin(directory) silinmesi isteniyorsa bu dizin boş olmalıdır, aksi halde silme başarısız olur.

1 – delete(Path) metodu dosyayı siler ya da bir exception fırlatır. Örneğin; eğer dosya yoksa NoSuchFileException fırlatılır. Aşağıdaki gibi bir kodla exception yakalanabilir ve silmenin neden başarısız olduğu belirlenebilir.

try {
    Files.delete(path);
} catch (NoSuchFileException x) {
    System.err.format("%s: no such" + " file or directory%n", path);
} catch (DirectoryNotEmptyException x) {
    System.err.format("%s not empty%n", path);
} catch (IOException x) {
    // File permission problems are caught here.
    System.err.println(x);
}

2 – deleteIfExists(Path) metodu da dosyayı siler ancak dosya yoksa exception fırlatılmaz. Bu metod birden çok thread ile çalışılıyorsa kullanışlıdır.

Dosya Kopyalama

copy(Path, Path, CopyOption) metodu kullanarak bir dosya ya da dizin kopyalanabilir. Eğer ki kopyalanacak yerde dosya zaten varsa ve REPLACE_EXISTING seçeneği kullanılmadıysa kopyalama başarısız olur.

Bu metodlar parametre olarak bazı Enum argümanları alır.

REPLACE EXIXTING : Eğer hedeflenen yerde dosya zaten olsa bile kopyalama gerçekleşir.
COPY_ATTRUBUTES : Dosya özellikleriyle beraber kopyalanır.(Son değiştirilme tarihi,oluşturulma tarihi gibi.)

import static java.nio.file.StandardCopyOption.*;
...
Files.copy(source, target, REPLACE_EXISTING);

Dosya Taşıma

Dosya ya da dizin move(Path,Path,CopyOption) metodu ile taşınabilir. Yine REPLACE_EXISTING seçeneği kullanılmadıysa ve hedeflenen yerde dosya zaten varsa taşıma başarısız olur.Ayrıca taşınacak dosyanın boş olması gerekir.

Taşıma metodları da parametre olarak bazı Enum argümanları alır.

REPLACE_EXISTING : Eğer hedeflenen yerde dosya zaten olsa bile taşıma gerçekleşir.
ATOMIC_MOVE : Taşıma işlemi atomik olarak gerçekleşir. Eğer dosya sistemi atomik taşımayı desteklemiyorsa exception fırlatılır.

import static java.nio.file.StandardCopyOption.*;
...
Files.move(source, target, REPLACE_EXISTING);

 

Yorum bırak

Yorum