Ohjelmointi

Tiedostojärjestelmän hallinta PHP: llä

Kirjoitin aiemmin blogia PHP: n käytöstä komentorivillä, mutta en katsonut PHP: n käyttöä pääsemään kyseisen viestin tiedostojärjestelmään blogiviestin koon vuoksi. Käytän tätä viestiä kattamaan joitain PHP-tiedostojärjestelmän hallinnan perusteita.

Monet meistä, jotka kirjoittavat ja käyttävät komentosarjoja, tekevät niin tiedostojärjestelmään liittyville toiminnoille. Komentosarjatoiminnot suoritamme yleensä tiedostojärjestelmässä. Erityisesti havaitsemme usein tarvitsevamme kopioida tiedostoja, nimetä tiedostoja uudelleen, poistaa tiedostoja ja avata ja sulkea tiedostoja. Meidän on usein suoritettava tietty logiikka tiettyjen tiedostojen ja hakemistojen ominaisuuksien perusteella. Olisi vaikeaa pitää kieltä vakavasti komentosarjakielenä ilman kunnollista tiedostojärjestelmän tukea. Onneksi PHP: llä on sisäänrakennettu tuki tiedostojärjestelmän hallintaan. Tätä tukea voidaan käyttää komentorivin PHP kanssa.

W3Schools.com on osoittautunut arvokkaaksi resurssiksi verkkotekniikoiden oppimiselle, ja niiden kattavuus PHP-tiedostojärjestelmätoiminnoissa on toinen esimerkki tästä. Sivu muistuttaa meitä siitä, että PHP-tiedostojärjestelmän toiminnot "ovat osa PHP-ydintä" ja "antavat sinun käyttää ja käsitellä tiedostojärjestelmää". Mikä tärkeintä, tällä sivulla on myös yhteenveto PHP-tiedostojärjestelmän kokoonpanotiedoista, PHP-tiedostojärjestelmän toiminnoista ja PHP-tiedostojärjestelmän vakioista. Funktion nimen napsauttaminen johtaa sivulle, jossa on lisätietoja toiminnosta, sekä PHP-koodiesimerkin kyseistä toimintoa käyttämällä. Koska käsittelen vain osan näistä tässä viestissä, halusin varmistaa, että viittaan tähän W3Schools -sivuun aikaisin.

Seuraava komentosarja, demoPhpFileSystemManagement.php, osoittaa useita PHP: n toimintoja tiedostotietojen määrittämiseksi. Luettelon koko käsikirjoituksen tähän ja toistan sitten käsikirjoituksen osat uudelleen keskustellessani niistä.

demoPhpFileSystemManagement.php

#! / usr / bin / php 

Ennen kuin perehdyn tarkemmin edellisessä esimerkissä käytettyjen PHP-tiedostojärjestelmän toimintoihin, olen havainnut Java-taustani kyseisessä PHP-koodissa. Esimerkiksi käytin koodin funktioihin Javadoc-tyylisiä kommentteja. Onneksi PHPDocumentor kunnioittaa Javadoc-tyylisiä kommentteja tuottaessaan koodidokumentaatiota. Yllä oleva koodi osoittaa myös eron nimityskäytännöissä, joihin olen tottunut Java-ohjelmassa (kamelin tapaus), ja PHP: n nimeämiskäytännöistä (kaikki pienet kirjaimet, joissa on alaviivoilla erotetut sanat), kuten PHP-toiminnot osoittavat.

PHP-komentosarjan ensimmäinen osa tarjoaa yksinkertaisen komentorivivalikon, joka kehottaa käyttäjää syöttämään valintoja, tiedostonimiä ja polkuja. Tämä koodinpätkä ei tee mitään itse PHP-tiedostojärjestelmätoimintojen kanssa, mutta se osoittaa PHP-standardin syötteen ja lähdön sekä PHP-kytkimen käskyn. Tämä ensimmäinen osa toistetaan tässä.

Komentorivivalikko ja syötteen käsittely

tee {echo "\ nMinkä PHP-tiedostojärjestelmän käyttö haluat suorittaa? \ n \ n"; echo "1. jäsennä tiedoston polun tiedot \ n"; kaiku "2. Hanki absoluuttinen polku \ n"; echo "3. Hae tiedostokoko \ n"; kaiku "4. Hae levyn koko ja vapaa tila \ n"; echo "5. Hae tiedostoajat \ n"; echo "\ nSyötä 0 poistumiseen \ n"; echo "\ n \ nValintasi:"; $ valinta = trim (fgets (STDIN)); } while (! (($ selection == "0") || ($ selection == "1") || ($ selection == "2") || ($ selection == "3") || ( $ selection == "4") || ($ selection == "5"))); switch ($ selection) {tapaus "1": echo "Syötä tiedostopolku:"; $ filePath = trim (fgets (STDIN)); $ filePathInfo = parseFilePath ($ filePath); echo $ filePathInfo; tauko; tapaus "2": echo "Anna polku:"; $ filePath = trim (fgets (STDIN)); $ realPath = convertPathToAbsolute ($ filePath); echo $ realPath; tauko; tapaus "3": echo "Syötä tiedoston polku ja nimi:"; $ filePath = trim (fgets (STDIN)); $ sizeOfFile = getSizeOfFile ($ filePath); echo "File". $ filePath. "on kooltaan". $ sizeOfFile. "tavua."; tauko; tapaus "4": echo "Syötä levytunniste:"; $ diskLabel = trim (fgets (STDIN)); $ diskSpace = getDiskSizeAndFreeSpace ($ diskLabel); $ percentFree = $ diskSpace [1] / $ diskSpace [0]; echo "Disk". $ diskLabel. "sisältää". $ diskSpace [1]. "/". $ diskSpace [0]. "tavua ilmaiseksi (" .round ($ percentFree * 100). "%)."; tauko; tapaus "5": echo "Syötä tiedosto, joka haluaa käyttää / muuttaa / muokata aikoja:"; $ filePath = trim (fgets (STDIN)); $ fileTimes = getFileTimes ($ filePath); echo "File". $ filePath. "käytettiin viimeksi sivustolla". $ fileTimes [0]. ", muutettiin viimeksi". $ fileTimes [1]. "ja viimeksi muokattu". $ fileTimes [2]; tauko; tapaus "0": oletus: echo "\ n \ n"; exit (); } 

PHP-komentosarjan loppuosa sisältää toimintoja, jotka käyttävät ja osoittavat PHP-tiedostojärjestelmän hallintatoimintoja.

PHP tarjoaa toiminnot, jotka helpottavat pääsyä tiedostopolun yksityiskohtiin, kuten tiedoston hakemistoon, itse tiedoston koko nimeen, tiedoston laajennukseen ja tiedoston nimeen ilman laajennusta. Jotkut näistä on esitetty yllä olevassa esimerkissä parseFilePath toiminto, joka toistetaan seuraavaksi. Toiminto näyttää PHP: n basename-, dirname- ja pathinfo-toiminnot.

PHP tarjoaa tiedostopolun tiedot

/ ** * jäsennä toimitettu tiedostopolku. Osoittaa seuraavat PHP-toiminnot: * * - basename (): Tarjoaa tiedostopolun perusosan (tiedostonimi). * - dirname (): Tiedoston polun hakemiston nimi. * - pathinfo (): Kaikki polun komponentit (basename, hakemiston nimi, laajennus). * * @param $ filePath Analysoitava tiedostopolku. * @return Tiedostopolun tiedot yhdessä merkkijonossa. * / function parseFilePath ($ filePath) {echo "jäsennetään tiedostopolkua ...", $ filePath, "\ n"; $ fileBaseName = basename ($ filePath); $ fileDirectoryName = dirname ($ filePath); $ pathInfo = pathinfo ($ filePath); palauta "Tiedostonimi:". $ fileBaseName. "\ nHakemiston nimi:". $ fileDirectoryName. "\ nTiedostonimi:". $ pathInfo ['basename']. "\ nHakemiston nimi:". $ pathInfo ['dirname']. " \ nTiedostotunniste: ". $ pathInfo ['extension']." \ nTiedoston nimi ilman laajennusta: ". $ pathInfo ['filename']; } 

Yllä olevan suorittamisen tulos esimerkkitiedostoon nähdään nyt.

PHP tarjoaa hyödyllisen reaaliaikatoiminnon, joka tarjoaa absoluuttisen version tarjotusta polusta. Esimerkiksi se ratkaisee pehmeät linkit ja suhteelliset hakemistot palauttamaan absoluuttisen polun. Tämä osoitetaan convertPathToAbsolute funktio esimerkissäni (ja toistettu seuraavassa koodiluettelossa).

Absoluuttisten polkujen esittely reaalireitillä

/ ** * Muunna annettu polku absoluuttiseksi poluksi. * * @param $ filePath Tiedoston polku on absoluuttinen. * @return Annetun tiedostopolun absoluuttinen versio. * / function convertPathToAbsolute ($ filePath) {echo "Muunnetaan tiedostopolku", $ filePath, "absoluuttiseksi poluksi ... \ n"; return realpath ($ filePath); } 

Komentosarjan yllä oleva osa tuottaa seuraavan tuloksen.

PHP: n avulla on helppo määrittää tiedoston koko sopivasti nimitetyllä tiedostokoko-toiminnolla. Minun getSizeOfFile toiminto osoittaa tämän ja on lueteltu yksin seuraavassa koodiluettelossa.

Tiedoston koon saaminen PHP: ssä

/ ** * Määritä toimitetun tiedoston koko. * * @param? $ filePath Tarvittavan tiedoston polku ja nimi. * @return Tiedoston koko ilmoitetaan annetulla tiedostopolulla ja nimellä (tavuina). * / function getSizeOfFile ($ filePath) {echo "Haetaan tiedoston kokoa", $ filePath, "... \ n"; palauta tiedostokoko ($ filePath); } 

Koodi johtaa seuraavassa kuvassa näkyvään lähtöön.

PHP: n avulla on myös helppo saada levytilaa koskevia tietoja. PHP: n disk_total_space- ja disk_free_space-toiminnot on esitetty alla olevassa koodiluettelossa minun getDiskSizeAndFreeSpace-funktiolleni.

PHP-levyn koko ja vapaa tila

/ ** * Anna levykoko ja vapaa tila levylle toimitetulle levylle. * * @param $ diskLabel Levyn etiketti, jonka koko ja vapaa tila on toimitettava *. * @return Kahden elementin taulukko, joista ensimmäinen on levytila ​​(tavuina) * ja toinen vapaata levytilaa (tavuina). * / function getDiskSizeAndFreeSpace ($ diskLabel) {return-taulukko (disk_total_space ($ diskLabel), disk_free_space ($ diskLabel)); } 

Yllä oleva esimerkki ei ainoastaan ​​osoita PHP: n disk_total_space- ja disk_free_space-funktioita, vaan se myös osoittaa PHP: n matriisitoiminnon avulla taulukon luomisen ja elementtien sijoittamisen matriisiin yhdellä käskyllä.

Tämän komentosarjan osan tulos näkyy seuraavaksi.

Viimeinen toiminto komentosarjassa on getFileTimes ja sen tarkoituksena on osoittaa kolme PHP-menetelmää tiedostoihin liittyvien päivämäärien / aikojen käyttämiseksi. Erityisesti fileatime-, filectime- ja filemtime-toiminnot esitetään.

PHP-tiedostojen ajat

$config[zx-auto] not found$config[zx-overlay] not found