Programavimas

Failų sistemos valdymas naudojant PHP

Anksčiau rašiau tinklaraštį naudodamasis PHP komandinėje eilutėje, bet nenurodžiau PHP naudojimo norint pasiekti failo sistemą tame įraše, kad būtų atsižvelgta į tinklaraščio įrašo dydį. Aš naudoju šį įrašą, norėdamas aptarti kai kuriuos PHP failų sistemos valdymo pagrindus.

Daugelis iš mūsų, kurie rašo ir naudoja scenarijus, tai daro funkcijoms, susijusioms su failų sistema. Mes scenarijaus veiksmus, kuriuos paprastai atliekame failų sistemoje. Konkrečiai, mums dažnai reikia kopijuoti failus, pervadinti failus, pašalinti failus ir atidaryti bei uždaryti failus. Mes dažnai turime atlikti tam tikrą logiką, remdamiesi tam tikromis failų ir katalogų savybėmis. Sunku būtų rimtai laikyti kalbą kaip scenarijaus kalbą be padoraus failų sistemos palaikymo. Laimei, PHP turi integruotą failų sistemos valdymo palaikymą. Ši parama gali būti naudojama kartu su komandine eilute PHP.

W3Schools.com yra įrodytas vertingas šaltinis, norint sužinoti apie žiniatinklio technologijas, o jų pavyzdys yra PHP failų sistemos funkcijų aprėptis. Šis puslapis mums primena, kad PHP failų sistemos funkcijos „yra PHP branduolio dalis“ ir „leidžia jums pasiekti ir valdyti failų sistemą“. Dar svarbiau, kad šiame puslapyje taip pat apibendrinama išsami PHP failų sistemos konfigūracijos informacija, PHP failų sistemos funkcijos ir PHP failų sistemos konstantos. Spustelėjus funkcijos pavadinimą, bus atidarytas puslapis, kuriame bus pateikta daugiau informacijos apie šią funkciją, taip pat PHP kodo pavyzdys naudojant šią funkciją. Kadangi šiame įraše aptarsiu tik jų dalį, norėjau iš anksto pateikti nuorodą į šį „W3Schools“ puslapį.

Šis scenarijus, demoPhpFileSystemManagement.php, parodo kelias PHP funkcijas nustatant failo informaciją. Aš čia surašau visą scenarijų ir tada vėl aptariu scenarijaus dalis.

demoPhpFileSystemManagement.php

#! / usr / bin / php 

Prieš pradėdamas išsamiau aprašyti PHP failų sistemos funkcijas, naudojamas aukščiau pateiktame pavyzdyje, stebėjau savo Java foną tame PHP kode. Pavyzdžiui, kodo funkcijoms naudojau „Javadoc“ stiliaus komentarus. Laimei, kurdamas kodo dokumentaciją, „PHPDocumentor“ gerbia „Javadoc“ stiliaus komentarus. Pirmiau pateiktas kodas taip pat parodo, kokie yra pavadinimo įpročiai, prie kurių esu įpratęs „Java“ (kupranugarių atvejis), ir PHP pavadinimų suteikimo taisyklės (visi mažosios raidės pavadinimai su žodžiais, atskirtais pabraukimais), kaip parodo iškeltos PHP funkcijos.

Pirmoje PHP scenarijaus dalyje pateikiamas paprastas teksto komandinės eilutės meniu, raginantis vartotoją įvesti pasirinkimus, failų pavadinimus ir kelius. Šis kodo fragmentas nieko nedaro su PHP failų sistemos funkcijomis, tačiau jis parodo standartinį PHP įvestį ir išvestį bei PHP jungiklio teiginį. Ta pirmoji dalis čia atkartota.

Komandinės eilutės meniu ir įvesties apdorojimas

atlikite {echo "\ nkurią PHP failų sistemos operaciją norite paleisti? \ n \ n"; echo "1. Analizuoti failo kelio informaciją \ n"; aidas "2. Įsigykite absoliutų kelią \ n"; echo "3. Gauti failo dydį \ n"; echo "4. Gaukite disko dydį ir laisvą vietą \ n"; echo "5. Gauti failų laikus \ n"; echo "\ nĮveskite 0 norėdami išeiti \ n"; echo "\ n \ nJūsų pasirinkimas:"; $ pasirinkimas = apdaila (fgets (STDIN)); } while (! (($ selection == "0") || ($ selection == "1") || ($ selection == "2") || ($ selection == "3") || ( $ selection == "4") || ($ selection == "5"))); switch ($ selection) {case "1": echo "Įveskite failo kelią:"; $ filePath = apdaila (fgets (STDIN)); $ filePathInfo = parseFilePath ($ filePath); echo $ filePathInfo; pertrauka; atvejis „2“: aidas „Enter path:“; $ filePath = apdaila (fgets (STDIN)); $ realPath = convertPathToAbsolute ($ filePath); echo $ realPath; pertrauka; atvejis "3": echo "Įveskite failo kelią ir pavadinimą:"; $ filePath = apdaila (fgets (STDIN)); $ sizeOfFile = getSizeOfFile ($ filePath); echo „File“. $ filePath. "dydis yra„. $ sizeOfFile. "baitų."; pertrauka; atvejis "4": echo "Įveskite disko etiketę:"; $ diskLabel = apdaila (fgets (STDIN)); $ diskSpace = getDiskSizeAndFreeSpace ($ diskLabel); $ percentFree = $ diskSpace [1] / $ diskSpace [0]; echo "Disk". $ diskLabel. "turi". $ diskSpace [1]. "iš". $ diskSpace [0]. "baitų nemokamai (" .round ($ percentFree * 100). "%)."; pertrauka; atvejis "5": echo "Įveskite failą, kuriam reikia prieigos / pakeitimo / modifikavimo laiko:"; $ filePath = apdaila (fgets (STDIN)); $ fileTimes = getFileTimes ($ filePath); echo „File“. $ filePath. "paskutinį kartą buvo pasiektas„. $ fileTimes [0]. ", paskutinį kartą buvo pakeistas„. $ fileTimes [1]. "ir paskutinį kartą modifikuotas„. $ fileTimes [2]; pertrauka; atvejis "0": numatytasis: echo "\ n \ n"; išėjimas (); } 

Likusioje PHP scenarijaus dalyje yra funkcijos, kurios naudoja ir demonstruoja PHP failų sistemos valdymo funkcijas.

PHP suteikia galimybes lengvai pasiekti išsamią failo kelio informaciją, pvz., Failo katalogą, visą failo pavadinimą, failo plėtinį ir failo pavadinimą be plėtinio. Kai kurie iš jų yra parodyti aukščiau pateiktame pavyzdyje parseFilePath funkcija, kuri atkuriama toliau. Ši funkcija rodo PHP bazinio pavadinimo, direktoriaus pavadinimo ir kelio informacijos funkcijas.

PHP teikia informaciją apie failo kelią

/ ** * Analizuokite pateiktą failo kelią. Parodo šias PHP funkcijas: * * - basename (): pateikia pagrindinę failo kelio dalį (failo pavadinimą). * - dirname (): failo kelio katalogo pavadinimo dalis. * - pathinfo (): visi kelio komponentai (bazės vardas, katalogo pavadinimas, plėtinys). * * @param $ filePath Analizuojamas failo kelias. * @return Failo kelio informacija vienoje eilutėje. * / function parseFilePath ($ filePath) {echo "Analizuojamas failo kelias ...", $ filePath, "\ n"; $ fileBaseName = bazinis vardas ($ filePath); $ fileDirectoryName = dirname ($ filePath); $ pathInfo = pathinfo ($ filePath); grąžinkite "Failo pavadinimas:". $ fileBaseName. "\ nKatalogo pavadinimas:". $ fileDirectoryName. "\ nFailo pavadinimas:". $ pathInfo ['bazename']. "\ nKatalogo pavadinimas:". $ pathInfo ['dirname']. " \ nFailo plėtinys: ". $ pathInfo ['extension']." \ nFailo pavadinimas be plėtinio: ". $ pathInfo ['filename']; } 

Dabar rodoma išvestis, vykdant aukščiau nurodytą failą su failo pavyzdžiu.

PHP teikia naudingą realaus kelio funkciją, kuri pateikia absoliučią pateikto kelio versiją. Pavyzdžiui, jis išspręs minkštas nuorodas ir santykinius katalogus, kad grąžintų absoliutų kelią. Tai įrodyta convertPathToAbsolute funkcija mano pavyzdyje (ir atkurta kitame kodų sąraše).

Absoliutų kelių demonstravimas realiuoju keliu

/ ** * Konvertuokite pateiktą kelią į absoliutų kelią. * * @param $ filePath Failo kelias turi būti absoliutus. * @return Absoliuti pateikto failo kelio versija. * / function convertPathToAbsolute ($ filePath) {echo "Konvertuojamas failo kelias", $ filePath, "į absoliutų kelią ... \ n"; grąžinti realpath ($ filePath); } 

Minėta scenarijaus dalis sukuria tokią išvestį.

PHP leidžia lengvai nustatyti failo dydį naudojant tinkamai pavadintą failų dydžio funkciją. Mano „getSizeOfFile“ funkcija tai įrodo ir yra įtraukta į kitą kodų sąrašą.

Kaip gauti failo dydį PHP

/ ** * Nustatykite pateikto failo dydį. * * @param? $ filePath Reikalingo failo kelias ir pavadinimas. * @return Failo dydis nurodomas nurodytu failo keliu ir pavadinimu (baitais). * / function getSizeOfFile ($ filePath) {echo "Gaunamas failo dydis", $ filePath, "... \ n"; grąžinti failo dydį ($ filePath); } 

Kodas veda prie išvesties, parodytos kitame paveikslėlyje.

PHP taip pat leidžia lengvai gauti vietos diske informaciją. PHP funkcijos „disk_total_space“ ir „disk_free_space“ yra parodytos žemiau esančiame mano getDiskSizeAndFreeSpace funkcijos kodų sąraše.

PHP disko dydis ir laisva vieta

/ ** * Pateikite disko dydį ir laisvos vietos diske numatytam diskui. * * @param $ diskLabel Disko, kurio bendras dydis ir laisva vieta turi būti * etiketė. * @return Dviejų elementų masyvas, iš kurių pirmasis yra bendras vietos diske (baitais) *, o antrasis - laisvos vietos diske (baitais). * / function getDiskSizeAndFreeSpace ($ diskLabel) {return masyvas (disk_total_space ($ diskLabel), disk_free_space ($ diskLabel)); } 

Ankstesnis pavyzdys ne tik parodo PHP funkcijas disk_total_space ir disk_free_space, bet ir parodo, kad naudojant PHP masyvo funkciją masyvui sukurti ir elementams į masyvą įdėti į vieną sakinį.

Šios scenarijaus dalies išvestis rodoma toliau.

Paskutinė mano scenarijaus funkcija yra „getFileTimes“ ir jo tikslas yra parodyti tris PHP metodus, kaip pasiekti datas / laikus, susijusius su failais. Konkrečiai, demonstruojamos filmeatime, filectime ir filmtime funkcijos.

PHP failų laikai

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