Link Search Menu Expand Document

Tiedostot

\Pike\FileSystem on abstraktio yleisimpien php-natiivien tiedostonhallintafunktioiden (is_dir(), file_get_contents()) ympärille.

use \Pike\Interfaces\FileSystemInterface;
final class MyCtrl {
    public function __construct(FileSystemInterface $fs) {
        $this->fs = $fs;
    }
    // tai..
    public function myMethod(FileSystemInterface $fs): void {
        // tee jotain $fs:llä
    }
}

Sisällysluettelo

  1. Tiedoston luominen, tiedostoon kirjoittaminen
  2. Tiedoston lukeminen
  3. Tiedoston poistaminen
  4. Tiedoston kopioiminen
  5. Tiedoston nimeäminen tai siirtäminen
  6. Kansion luominen
  7. Kansion poistaminen
  8. Tiedostopolun tarkistaminen
  9. Kansiopolun tarkistaminen
  10. Kansion sisällön lukeminen (ei-rekursiivinen)
  11. Kansion sisällön lukeminen (rekursiivinen)
  12. Tiedoston viimeisimmän modifikaation lukeminen
  13. Polun normalisointi

Tiedoston luominen, tiedostoon kirjoittaminen

$numBytesWritten = $fs->write(__DIR__ . '/tiedosto.txt', 'Sisältö');
if ($numBytesWritten !== false)
    ; // ok
else
    ; // Handlaa failure

Tiedoston lukeminen

$contents = $fs->read(__DIR__ . '/tiedosto.txt');
if ($contents !== false)
    ; // ok
else
    ; // Handlaa failure

Tiedoston poistaminen

$ok = $fs->unlink(__DIR__ . '/tiedosto.txt');
if ($ok)
    ; // ok
else
    ; // Handlaa failure

Tiedoston kopioiminen

Kohdepolun kansio tulee olla olemassa. Jos kohdetiedosto on jo olemassa, se ylikirjoitetaan.

$ok = $fs->copy(__DIR__ . '/tiedosto.txt', __DIR__ . '/copied.txt');
if ($ok)
    ; // ok
else
    ; // Handlaa failure

Tiedoston nimeäminen tai siirtäminen

Jos kohdetiedosto on jo olemassa, se ylikirjoitetaan.

$ok = $fs->rename(__DIR__ . '/vanha.txt', __DIR__ . '/uusi.txt');
if ($ok)
    ; // ok
else
    ; // Handlaa failure

Kansion luominen

$perms = 0755;      // oletus 0777
$recursive = false; // oletus true
$ok = $fs->mkDir(__DIR__ . '/kansio', $perms, $recursive);
if ($ok)
    ; // ok
else
    ; // Handlaa failure

Kansion poistaminen

$ok = $fs->rmDir(__DIR__ . '/kansio');
if ($ok)
    ; // ok
else
    ; // Handlaa failure

Tiedostopolun tarkistaminen

$isFile = $fs->isFile(__DIR__ . '/tiedosto.txt');
if ($isFile)
    ; // on tiedosto
else
    ; // ei ole tiedosto

Kansiopolun tarkistaminen

$isDir = $fs->isDir(__DIR__ . '/kansio');
if ($isDir)
    ; // on kansio
else
    ; // ei ole kansio

Kansion sisällön lukeminen (ei-rekursiivinen)

$globPattern = '*.txt'; // oletus '*',
$globFlags = null;      // oletus GLOB_ERR
$fullFilePaths = $fs->readDir(__DIR__ . '/kansio', $globPattern, $globFlags);
if ($fullFilePaths !== false)
    echo $fullFilePaths[0] ?? ''; // /htdocs/projekti/kansio/foo.txt
else
    ; // Handlaa failure

Kansion sisällön lukeminen (rekursiivinen)

$regexpPattern = '/^.*\.(js|css)$/';
$flags = \FilesystemIterator::CURRENT_AS_PATHNAME; // ks. php.net/manual/en/recursivedirectoryiterator.construct.php
$fullFilePaths = $fs->readDirRecursive(__DIR__ . '/kansio', $regexpPattern, $flags);
if ($fullFilePaths)
    echo $fullFilePaths[0]; // /htdocs/projekti/kansio/alikansio/foo.js
else
    ; // $fullFilePaths === [], tee jotain

Tiedoston viimeisimmän modifikaation lukeminen

$unixTime = $fs->lastModTime(__DIR__ . '/tiedosto.txt');
if ($unixTime !== false)
    ; // Tee jotain $unixTimella
else
    ; // Handlaa failure

Polun normalisointi

$notNormalized = __DIR__ . '/foo/'; // c:\kansio\alikansio/foo/
$normalized = FileSystem::normalizePath($notNormalized);
echo $normalized;                   // c:/kansio/alikansio/foo

Copyright © 2019-2021 ut4