PHP - Informacije o datotekah

PHP - Informacije o datotekah

Avtor: Dani Sajtl

Uvod

  • Datoteke so shranjene v mapah na trdem disku – zunanji pomnilnik.
  • Mape so posebna vrsta datotek namenjene shranjevanju drugih datotek.
  • Mape so razvrščene hierarhično znotraj drugih map začenši z root mapo (najvišji nivo).
  • Datoteke lahko vsebujejo kakršnekoli podatke in informacije o njih samih, npr.

    • kdo je lastnik
    • kdaj je bila datoteka ustvarjena ...
  • PHP omogoča delo z datotečnim sistemom preko funkcij s katerimi lahko dobimo informacije o datotekah, jih odpiramo, beremo in zapisujemo v njih.

Razumevanje datotek in map

  • Vse na trdem disku je shranjeno v obliki datotek:

    • programskih,
    • podatkovnih,
    • datotek, ki so mape in
    • posebnih datotek.
  • PHP vsebuje funkcije za delo z vsemi temi datotekami.
  • Običajno bomo delali z besedilnimi datotekami, ki vsebujejo podatke.
  • Datoteka je urejeno zaporedje zlogov (bytov) shranjenih na trdem disku ali katerem drugem pomnilnem mediju.
  • Mapa je poseben tip datoteke, ki vsebuje imena datotek in map znotraj mape in kazalce, kje je vse to shranjeno na mediju.
  • Med operacijskimi sistemi temelječimi na UNIX-u, npr. Linux in Windows obstaja veliko razlik, ena od njih je tudi v tem, kako je zapisana datotečna pot.

    • Linux uporablja poševnice:

      /home/dani/documents/primer.txt
    • Windows uporablja leve poševnice:

      C:\MojiDok\documents\primer.txt

Informacije o datotekah

  • PHP vsebuje nekatere funkcije, ki nam omogočajo pridobitev uporabnih informacij o datotekah. Poglejmo si nekatere izmed njih.
  • S funkcijo file_exists() ugotovimo ali datoteka obstaja preden jo skušamo odpreti.

    • file_exists("/home/dani/datoteka.txt")
    • file_exists() vrne true , če datoteka na navedeni poti obstaja, drugače pa false .
  • Na podoben način lahko s funkcijo filesize() ugotovimo velikost datoteke na trdem disku.
  • Funkcija sprejme kot argument ime datoteke, enako kot funkcija file_exists() .

    • filesize("/home/dani/datoteka.txt")
    • Funkcija vrne velikost navedene datoteke v zlogih ali pa false , če pride do napake.

Informacije o datotekah

  • PHP nam zagotavlja tudi tri časovne funkcije za informacije o datotekah:

    • fileatime() – Vrne čas, ko smo nazadnje dostopali (accessed) do datoteke v obliki UNIX timestamp. Do datoteke se smatra, da smo dostopali, če smo vsebino prebrali.
    • filectime() – Vrne čas, ko je bila datoteka nazadnje spremenjena (changed) v obliki UNIX timestamp. Datoteka se smatra za spremenjeno, če smo jo ustvarili ali zapisali ali pa smo spremenili dovoljenja za dostop.
    • filemtime() – Vrne čas, ko je bila datoteka nazadnje modificirana (modified) v obliki UNIX timestamp. Datoteka se smatra za modificirano, če je bila ustvarjena ali pa je bila vsebina spremenjena.
 
UNIX timestamp
je celoštevilčna vrednost, ki predstavlja št. sekund od 1. januarja 1970 do navedenega datuma in ure.


  • Funkcija getdate() je zelo uporabna pri pretvorbi iz oblike UNIX timestamp.

    • Vrne polje (array) v katerem so časovne informacije, npr. leto, mesec, dan v mesecu itd.
    • $mojDatum = getdate();
    • $mojDatum["month"]

Ime datoteke iz poti

  • Ime datoteke lahko ločimo od poti s funkcijo basename() , ki kot argument sprejme celotno pot, vrne pa samo ime datoteke.

    • $ime_dat = basename("/home/dani/index.html");
    • Najbolj desno ime mape se shrani v spremenljivko $mapa

      $mapa = basename("/home/dani");
    • V bistvu basename() vrne zadnji celi niz za najbolj desno poševnico!
    • Če ne želimo podaljška v vrnjenem imenu, ga lahko odrežemo, če ga podamo kot drugi argument:

      $ime_dat = basename("/home/dani/moj.doc", ".doc");
0%
0%