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);
versiyon: 4.0