Dosya Sistemi İşlevleri
Nette\Utils\FileSystem bir dosya sistemi ile çalışmak için yararlı işlevler içeren duruk bir sınıftır. Yerel PHP işlevlerine göre bir avantajı, hata durumunda istisnalar atmasıdır.
Kurulum:
composer require nette/utils
Aşağıdaki örneklerde, aşağıdaki sınıf takma adının tanımlandığı varsayılmaktadır:
use Nette\Utils\FileSystem;
Manipülasyon
copy(string $origin, string $target, bool $overwrite=true): void
Bir dosyayı veya tüm dizini kopyalar. Varsayılan olarak mevcut dosya ve dizinlerin üzerine yazar. $overwrite
öğesi false
olarak ayarlanmışsa ve bir $target
zaten mevcutsa, bir
Nette\InvalidStateException
istisnası atar. Hata oluştuğunda Nette\IOException
istisnası atar.
FileSystem::copy('/path/to/source', '/path/to/dest', overwrite: true);
createDir(string $directory, int $mode=0777): void
Üst dizinler de dahil olmak üzere, mevcut değilse bir dizin oluşturur. Hata oluştuğunda Nette\IOException
şeklinde bir istisna atar.
FileSystem::createDir('/path/to/dir');
delete(string $path): void
Bir dosyayı veya varsa bir dizinin tamamını siler. Dizin boş değilse, önce içeriğini siler. Hata oluştuğunda
Nette\IOException
şeklinde bir istisna atar.
FileSystem::delete('/path/to/fileOrDir');
makeWritable(string $path, int $dirMode=0777, int $fileMode=0666): void
Dosya izinlerini $fileMode
veya dizin izinlerini $dirMode
olarak ayarlar. Özyinelemeli olarak
dizinin tüm içeriğini dolaşır ve izinleri de ayarlar.
FileSystem::makeWritable('/path/to/fileOrDir');
open(string $path, string $mode): resource
Dosya açar ve kaynak döndürür. $mode
parametresi, yerel fopen()
işleviyle aynı şekilde çalışır. Bir hata
oluşursa, Nette\IOException
istisnasını yükseltir.
$res = FileSystem::open('/path/to/file', 'r');
read(string $file): string
Bir $file
içeriğini okur. Hata oluştuğunda Nette\IOException
istisnası atar.
$content = FileSystem::read('/path/to/file');
readLines(string $file, bool $stripNewLines=true): \Generator
Dosya içeriğini satır satır okur. Yerel file()
işlevinden farklı olarak, dosyanın tamamını belleğe
okumaz, ancak mevcut bellekten daha büyük dosyaların okunabilmesi için sürekli olarak okur. $stripNewLines
,
\r
ve \n
satır sonu karakterlerinin çıkarılıp çıkarılmayacağını belirtir. Hata durumunda, bir
Nette\IOException
istisnası yükseltir.
$lines = FileSystem::readLines('/path/to/file');
foreach ($lines as $lineNum => $line) {
echo "Line $lineNum: $line\n";
}
rename(string $origin, string $target, bool $overwrite=true): void
$origin
tarafından belirtilen bir dosyayı veya dizini $target
adresine yeniden adlandırır veya
taşır. Varsayılan olarak mevcut dosya ve dizinlerin üzerine yazar. $overwrite
öğesi false
olarak
ayarlanmışsa ve $target
zaten mevcutsa, bir Nette\InvalidStateException
istisnası atar. Hata
oluştuğunda Nette\IOException
istisnası atar.
FileSystem::rename('/path/to/source', '/path/to/dest', overwrite: true);
write(string $file, string $content, int $mode=0666): void
$content
adresini bir $file
adresine yazar. Hata oluştuğunda bir Nette\IOException
istisnası atar.
FileSystem::write('/path/to/file', $content);
Yollar
isAbsolute(string $path): bool
$path
adresinin mutlak olup olmadığını belirler.
FileSystem::isAbsolute('../backup'); // false
FileSystem::isAbsolute('/backup'); // true
FileSystem::isAbsolute('C:/backup'); // true
joinPaths(string …$segments): string
Yolun tüm segmentlerini birleştirir ve sonucu normalleştirir.
FileSystem::joinPaths('a', 'b', 'file.txt'); // 'a/b/file.txt'
FileSystem::joinPaths('/a/', '/b/'); // '/a/b/'
FileSystem::joinPaths('/a/', '/../b'); // '/b'
normalizePath(string $path): string
..
ve .
adreslerini ve yol içindeki dizin ayırıcılarını normalleştirir.
FileSystem::normalizePath('/file/.'); // '/file/'
FileSystem::normalizePath('\file\..'); // '/file'
FileSystem::normalizePath('/file/../..'); // '/..'
FileSystem::normalizePath('file/../../bar'); // '/../bar'
unixSlashes(string $path): string
Eğik çizgileri Unix sistemlerinde kullanılan /
adresine dönüştürür.
$path = FileSystem::unixSlashes($path);
platformSlashes(string $path): string
Eğik çizgileri geçerli platforma özgü karakterlere dönüştürür, yani Windows'ta \
ve başka yerlerde
/
.
$path = FileSystem::platformSlashes($path);