国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Tutorial pembangunan PHP asas: Operasi fail PHP

1. Sistem fail

1 Kami akan klik kanan tetikus untuk memadam fail, control+c (atau klik kanan) untuk menyalin dan tampal fail dan buat fail baharu Untuk sesetengah fail, semak sama ada fail itu baca sahaja.

2. Alangkah baiknya jika operasi yang dilakukan pada komputer ini boleh dilakukan dalam kod.

3. Sebab, kalau ada operasi ni. Kita boleh melakukan banyak perkara:

  • Bolehkah saya menulis dan mengubah suai fail konfigurasi?

  • Adakah mungkin untuk mengesan kebenaran fail semasa memasang PHP?

  • Adakah mungkin untuk menjana fail Html dan banyak operasi lain

  • ..... Operasi fail digunakan di terlalu banyak tempat lain.

4. Mempelajari pemprosesan fail pada asasnya mempelajari fungsi pemprosesan fail. Gabungkannya dengan kod yang anda tulis sebelum ini untuk meningkatkan keupayaan pemprosesan perniagaan anda.


2 Baca fail

1.readfile membaca fail

Jadi bagaimana untuk membaca fail? Mari belajar fungsi dahulu.

int readfile (rentetan $filename)

Fungsi: Lulus dalam laluan fail dan keluarkan fail.

Dalam kod di bawah, fail dibaca selagi nama fail atau laluan fail yang ditentukan dihantar masuk.

<?php
    //linux類的讀了方式
    readfile("/home/paul/test.txt");
    //windows類的讀取方式
    readfile("c:\boot.ini");
?>

Nota: Tanda miring Windows dalam kod di atas ialah garis miring dan beberapa aksara mungkin terlepas. Oleh itu, apabila kita menulis, kita menulis dua garis miring.

2.file_get_contents membuka fail

Di atas ialah output langsung selepas hanya membuka fail Adakah terdapat sebarang operasi yang boleh ditetapkan kepada pembolehubah selepas membuka fail?

PHP pasti menyediakan kaedah ini. Kaedah ini adalah salah satu cara PHP membuka fail dan mengembalikan kandungan Mari kita lihat fungsi:

string file_get_contents (string nama fail)

Fungsi: Lulus Masukkan fail atau laluan fail, buka fail dan kembalikan kandungan fail. Kandungan fail ialah rentetan.

<?php
    $filename = 'NoAlike.txt';
    $filestring = file_get_contents($filename);
    echo $filestring;
?>

Kod di atas membuka fail dan mengeluarkan kandungan fail.

Mari kembangkan kod berdasarkan pengetahuan sebelumnya. Gunakan pengetahuan anda yang terdahulu.

<?php
    //假設(shè)我們有一個多行的文件叫NoAlike.txt,沒有的話你可以新建一個這個文件
     $filename = 'NoAlike.txt';
    //打開這個文件,將文件內(nèi)容賦值給$filestring
    $filestring = file_get_contents($filename);
    //因?yàn)槊恳恍杏幸粋€回車即\n,我用\n來把這個字符串切割成數(shù)組
    $filearray = explode("\n", $filestring);
    //把切割成的數(shù)組,下標(biāo)賦值給$key,值賦值給$val,每次循環(huán)將$key加1。
    while (list($key, $val) = each($filearray)) {
        ++$key;
        $val = trim($val);
        //用的單引號,單引號不解釋變量進(jìn)行了拼接而已
        print 'Line' . $key .':'.  $val.'<br />';
    }
?>

Di atas, kami telah menggabungkan ilmu yang telah kami pelajari sebelum ini.

3. Operasi fopen, fread, dan fclose membaca fail

Kaedah file_get_contents di atas untuk membuka fail adalah mudah dan kasar. Yang berikut

  • sumber fopen (rentetan $nama fail, mod rentetan)

  • rentetan rentetan (sumber $operation resource, int read length)

  • bool fclose ( resource $ operation resource)

Melalui fungsi di atas, kami akan menerangkan kaedah operasi biasa jenis sumber:

  • Sumber terbuka

  • Gunakan fungsi berkaitan untuk beroperasi

  • Tutup sumber

Fungsi fopen Fungsi fopen adalah untuk membuka fail Terdapat dua parameter utama:

l Laluan untuk membuka fail

<. ??>l Buka Mod fail

jenis pulangan ialah jenis sumber Ini adalah kali pertama kami menemui jenis sumber yang disebut dalam jenis asas sebelumnya.

Jenis sumber memerlukan fungsi lain untuk mengendalikan sumber ini. Semua sumber mesti ditutup apabila ia dibuka.

fungsi fread Fungsi fungsi adalah untuk membaca sumber fail terbuka. Baca sumber fail dengan panjang yang ditentukan, baca sebahagian daripadanya dan gerakkan sebahagian ke belakang. ke hujung fail.

fungsi fclose Fungsi fungsi fclose ialah untuk menutup sumber. Sumber dibuka dan ditutup.

Selepas memahami fungsi, dua fungsi terakhir agak mudah. Apakah mod fungsi fopen? Mod fopen adalah seperti berikut. ??>

Seterusnya, kita hanya akan mempelajari mod r Dalam pelajaran seterusnya, kita akan bercakap tentang mod lain semasa menulis.


38.png3. Kita mesti tahu cara membaca fail terlebih dahulu sebelum dapat menguasai penulisan fail dengan baik.


1 Buka fail


<?php
    //你可以創(chuàng)建一個NoAlike.txt,以只讀模式打開
    $fp = fopen('NoAlike.txt', "r");
 
 
    //var_dump()操作一下$fp看看效果,輸出的是不是只有類型提示的是resource
    var_dump($fp);
?>

2. Baca fail

<?php
    $fp = fopen('NoAlike.txt', "r");
 
    //打開一個文件類型后,讀取長度
    $contents = fread($fp, 1024);
?>

3. Tutup fail

<?php
    $fp = fopen($filename, 'r');
    $contents = fread($fp, 1024);
    fclose($fp);
    echo $contents;
?>
Nota lain:

Contoh penggunaan:

<?php
$fp = fopen($filename, 'ab');
$contents = fwrite($fp, '可愛的很\n喲');
fclose($fp);
echo $contents;
?>

Penjelasan: 39.png

Eksperimen tidak boleh membenarkan mata kasar melihat kesan eksperimen ini. Ingat sahaja ciri ini.


Windows menyediakan teg penukaran teks ('t') untuk menukar n kepada rn secara telus.

Berbeza dengan ini, anda juga boleh menggunakan 'b' untuk memaksa mod binari supaya data tidak ditukar. Untuk menggunakan bendera ini, gunakan sama ada 'b' atau 't' sebagai aksara terakhir hujah mod.


4. Cipta dan ubah suai kandungan fail


1.file_put_contents ditulis pada fail


Mari kita pelajari cara pertama untuk menulis fail: int file_put_contents (rentetan $fail laluan, rentetan $tulis data])

Fungsi : Tulis rentetan pada fail yang ditentukan, dan buat fail jika ia tidak wujud. Apa yang dikembalikan ialah panjang bait bertulis

<?php
    $data = "我是一個兵,來自老百姓";
 
    $numbytes = file_put_contents('binggege.txt', $data);
 
    if($numbytes){
 
        echo '寫入成功,我們讀取看看結(jié)果試試:';
 
        echo file_get_contents('binggege.txt');
 
    }else{
        echo '寫入失敗或者沒有權(quán)限,注意檢查';
    }
?>

Kami mendapati bahawa menulis fail agak mudah. Mengikut format fungsi ini, nyatakan fail dan tulis data rentetan.

2.fwrite bekerjasama dengan fopen untuk melaksanakan operasi penulisan

int fwrite ( sumber $ pembolehubah sumber fail, rentetan $ rentetan bertulis [, panjang int ])

Nota: Fungsi alias fwrite ialah fputs

Kami mencuba mod r dalam kelas terakhir, yang hanya digunakan semasa membaca Seterusnya, kami menggunakan fwrite plus w dalam fopen untuk menulis fail dalam mod tulis.

Mari kita lihat ciri-ciri:

Buka dalam mod penulisan, halakan penuding fail ke pengepala fail dan potong saiz fail kepada sifar. Jika fail itu tidak wujud maka cuba menciptanya.

Nota: Dalam percubaan berikut, anda boleh cuba mencipta fail test.txt baharu dan menulis kandungan ke dalamnya. Kemudian, anda boleh cuba memadam test.txt. Lihat apa petua yang ada.

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "w");
    $len = fwrite($fp, '我是一只來自南方的狼,一直在尋找心中的花姑娘');
    fclose($fp);
    print $len .'字節(jié)被寫入了\n";
?>

Ringkasan:
1. Sama ada terdapat fail baharu atau tidak, fail akan dibuka dan ditulis semula
2 >3. Fail Jika ia tidak wujud, ia akan dibuat

Kemudian mari kita bandingkan perbezaan antara mod berikut:

40.png

Mari kita buktikan melalui percubaan:

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "r+");
    $len = fwrite($fp, '我是一只來自南方的狼,一直在尋找心中的花姑娘');
    fclose($fp);
    print $len .'字節(jié)被寫入了\n';
?>

Anda boleh mengalih keluar tanda + selepas r semasa bereksperimen.

Melalui eksperimen, kami mendapati bahawa menggunakan mod r, data boleh ditulis apabila fail disimpan Jika hanya r digunakan, tulisan itu tidak berjaya.

3. Perbezaan antara mod dan mod w

Kod yang sama ada di bawah, kami menukarnya kepada mod.

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "a");
    $len = fwrite($fp,'讀大學(xué)迷茫了,PHP學(xué)院PHP給你希望');
    echo  $len .'字節(jié)被寫入了\n';
?>

Buka halaman web dan laksanakan kod ini, anda akan dapati: setiap kali anda memuat semula, akan ada perenggan tambahan dalam fail

Jika anda keliru di kolej, PHP Academy PHP memberi anda harapan.

Ringkasan:

41.png

Perbezaan antara mod 4.x dan mod w

Mari bereksperimen dengan kod ini sekali lagi, tukar kepada >Jika anda menukar $filename kepada nama fail lain, ia akan menjadi baik. Walau bagaimanapun, apabila saya menyegarkannya semula, ralat telah dilaporkan

x+ ialah mod x dipertingkat. Boleh juga digunakan semasa membaca.

5 Fail yang kami buat sebelum ini adalah fail kekal.

Mencipta fail sementara juga sangat berguna dalam pembangunan projek harian kami. Beberapa faedah mencipta fail sementara:


1 Padamkannya selepas selesai menulis


2. Tidak perlu mengekalkan status pemadaman fail ini Contohnya: Saya perlu memindahkan kandungan fail A ke B dan memindahkan kandungan fail B ke C.

Sama seperti dalam kehidupan sebenar, saya boleh mula-mula menggunakan botol sementara untuk mengisi air B, dan kemudian menulis data A ke dalam B. Masukkan air dari botol sementara ke C.

Mari kita pelajari fungsi ini:

resource tmpfile ( )

Fungsi: Buat fail sementara dan kembalikan jenis sumber. Fail dipadamkan apabila ia ditutup.

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "x");
    $len = fwrite($fp,'讀大學(xué)迷茫了,PHP學(xué)院PHP給你希望');
    echo  $len .'字節(jié)被寫入了\n';
?>

6. Alihkan, salin dan padam fail

1. $nama lama, $nama baharu);

Fungsi ini mengembalikan nilai bool untuk menukar nama lama kepada nama baharu.

<?php
    //創(chuàng)建了一個臨時(shí)文件
    $handle = tmpfile();
 
    //向里面寫入了數(shù)據(jù)
    $numbytes = fwrite($handle, '寫入臨時(shí)文件');
 
    //關(guān)閉臨時(shí)文件,文件即被刪除
    fclose($handle);
 
    echo  '向臨時(shí)文件中寫入了'.$numbytes . '個字節(jié)';
?>

Kami membuka direktori dan kami dapat melihat kesannya. Anda akan mendapati bahawa fail yang ditentukan disalin ke laluan sasaran.

2. Salin fail

Menyalin fail adalah bersamaan dengan teknologi pengklonan, mengklonkan perkara asal kepada perkara baharu. Kedua-duanya kelihatan sama.

salinan bool (fail sumber, fail sasaran)

Fungsi: Salin fail sumber dengan laluan yang ditentukan ke lokasi fail sasaran.

Mari kita bermain dengannya melalui percubaan dan kod:

<?php
    //舊文件名
    $filename = 'test.txt';
 
    //新文件名
    $filename2 = $filename . '.old';
 
    //復(fù)制文件
    rename($filename, $filename2);
?>
Ringkasan:

Anda akan mendapati terdapat fail tambahan melalui contoh di atas.

3. Padam fail

Memadamkan fail bermakna memadamkan fail dalam laluan yang ditentukan, tetapi pemadaman ini adalah pemadaman langsung. Jika anda menggunakan komputer Windows, anda tidak dapat melihat fail ini dalam Tong Kitar Semula. Anda hanya akan mendapati bahawa fail ini telah hilang.

bool nyahpaut (fail dengan laluan yang ditentukan)

<?php
    //舊文件名
    $filename = 'copy.txt';
 
    //新文件名
    $filename2 = $filename . '_new';
 
    //修改名字。
    copy($filename, $filename2);
?>

7 >
Sesetengah pelajar sangat ingin tahu tentang tempat pengesanan atribut fail digunakan. Mengesan atribut fail boleh digunakan di terlalu banyak tempat.

Mari berikan contoh: 1 Apabila kami memasang perisian, anda akan mendapati bahawa jika fail itu wujud, ia akan melompat ke tempat lain.

2. Jika sesetengah fail tidak mempunyai kebenaran menulis semasa proses pemasangan, pemasangan tidak akan dibenarkan.

Mari ambil tangkapan skrin proses pemasangan discuz, perisian yang sangat terkenal di China:

Contoh di atas ialah penggunaan pengesanan fail biasa.

Mari kita pelajari kumpulan fungsi berikut. Kemudian, mari belajar melalui contoh.

42.pngbool file_exists ($nyatakan nama fail atau laluan fail)

Fungsi: sama ada fail itu wujud.

bool is_readable ($nyatakan nama fail atau laluan fail)

Fungsi: sama ada fail itu boleh dibaca

bool is_writeable ($specify nama fail atau laluan fail)

Fungsi: sama ada fail boleh ditulis

bool is_executable ($menentukan nama fail atau laluan fail)

Fungsi: sama ada fail boleh laksana

bool is_file ($menentukan nama fail atau laluan fail)

Fungsi: sama ada ia fail

bool is_dir ($ menentukan nama fail atau laluan fail)

Fungsi: Sama ada ia adalah direktori

void clearstatcache (void)

Fungsi: Kosongkan cache status fail
Fungsi di atas boleh dilihat sepintas lalu. Faham. Bagi eksperimen, mari tulis contoh yang kami berikan pada mulanya.

Mari kita bincangkan tentang contoh pertama, kunci fail. Jika ia telah dipasang, jika kunci pemasangan wujud, ia akan menggesa bahawa ia telah dipasang, jika tidak, pemasangan akan diteruskan.

Kami menganggap bahawa URL antara muka pemasangan ialah: install.php, dan fail kunci yang dipasang ialah install.lock. Kami boleh mengesan sama ada fail install.lock wujud.

<?php
    $filename = 'test.txt';
 
    if (unlink($filename)) {
        echo  "刪除文件成功 $filename!\n";
    } else {
        echo "刪除 $filename 失敗!\n";
    }
?>

Mari lakukan eksperimen pengesanan pemasangan fail untuk mengesan sama ada fail atau direktori mempunyai kebenaran menulis atau membaca. Jika tidak, pemasangan tidak boleh dilakukan.

Idea untuk mengendalikan perkara ini adalah seperti berikut:

1 Tentukan kumpulan tatasusunan yang perlu mengesan kebenaran

2 ialah folder atau fail

3 Buat pembolehubah bit set adalah palsu, langkah pemasangan seterusnya tidak akan dipaparkan

<?php
if(file_exists('install.lock')){
    echo '已安裝,請不要再次進(jìn)行安裝';
    exit;
}
?>

Melalui contoh di atas, kita telah melakukannya. Laksanakan pengesanan pemasangan semasa proses pemasangan perisian PHP tertentu.

Itulah realisasi idea kami di atas.


8 Fungsi dan pemalar biasa untuk fail

1 Pemalar berikut adalah yang paling biasa digunakan. Merupakan pemalar yang menjadi pembatas direktori fail.

Mari kita lihat format:

43.pngFormat laluan tingkap ialah d:xxxxxx Nota: windows menyokong d:/xxx/xxx

linux Format laluan ialah /home/xxx/xxx Nota: Jika homexxxxxx salah pada Linux

jadi apabila anda mendayakan escape dan seumpamanya, d:xxxxxx adalah sama jika aksara escape digunakan bersama. Apabila menilai, terdapat dua Jika ada, tukarkannya menjadi satu, dan kemudian ganti / untuk memisahkan laluan, supaya laluan pada Linux atau Windows boleh kekal bersatu.

Kami akan menggunakan pemalar:

DIRECTORY_SEPARATOR


Mari tulis contoh kecil untuk menentukan laluan fail semasa:

Memandangkan FILE ialah pratetap Pemalar PHP ditakrifkan, jadi tiada cara untuk mengubahnya Jika perlu, FILE juga boleh menyesuaikan diri dengan sistem pengendalian.

Kemudian jangan gunakan FILE, anda boleh menggunakan pemalar tersuai dan proses FILE, seperti berikut:

<?php
 
//可以定義一批文件是否存在
$files = [
    'config.php',
    'img/',
    'uploads/',
];
 
//定義標(biāo)志位變量
$flag = true;
foreach($files as  $v){
    echo $v;
 
    //判斷是文件還是文件夾
 
    if(is_file($v)){
        echo '是一個文件    ';
    }else if(is_dir($v)){
        echo '是一個文件夾    ';
    }
 
    if(is_readable($v)){
        echo ' 可讀';
    }else{
         echo '<font color="red">不可讀</font>';
    }
 
    if(is_writeable($v)){
        echo '可寫';
    }else{
        echo '<font color="red">不可寫</font>';
    }
 
    echo '<br />';
}
 
if($flag){
    echo '<a href="step1">下一步</a>';
 
}else{
     echo '不能進(jìn)行安裝';
}
?>

2. Fungsi operasi penunjuk fail

rewind ( resource handle)

Fungsi: Kembalikan penunjuk ke permulaan

fseek ( resource handle, int offset [, int from_where] )

Fungsi: Gerakkan penuding fail ke belakang mengikut aksara yang ditentukan
Dalam bacaan sebelumnya, kami mendapati bahawa fread membaca data dengan panjang yang ditentukan. Baca kandungan panjang yang ditentukan Pada kali seterusnya anda membacanya, mulakan dari kedudukan asal dan kemudian baca ke belakang.

44.pngSeperti yang ditunjukkan dalam gambar di atas, kita boleh bayangkan:

1 Apabila fail pertama kali dibuka, ikon merah dibaca

2 .Fail warna palsu dibaca dari A hingga C

3 Kami menulis sekumpulan fail dalam fail demo.txt:

    Abcdeefghijklk
  • Opqrst
  • Uvwxyz
  • 12345678

Kita boleh mulakan percubaan.

<?php
$_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__);
define('__CUR_FILE__', $_current_file);
echo __CUR_FILE__;
?>

Dalam contoh di atas, anda akan mendapati bahawa fseek akan menggerakkan sebanyak bait sebagai panjang yang ditentukan. Dan gulung semula kembali ke permulaan fail setiap kali.

Bagaimana untuk bergerak ke penghujung? Kita boleh mengira bilangan bait. Bergerak terus ke belakang semasa fseek.

Mari kita bincangkan tentang bait statistik saiz fail.

3.filesize mengesan saiz fail

<?php
$fp = fopen('output.txt', 'r+');
//讀取10個字符
echo fread($fp,10);
 
//指針設(shè)置回到開始處
rewind($handle);
//再讀取10次看看輸出的是什么
echo fread($fp,10);
 
//文件指針向后移動10個字符
echo fseek($fp,10);
 
//再看看文件中輸出的是什么
echo fread($fp,10);
 
fclose($handle);
?>

4. Fungsi lain untuk mengendalikan fail

Malah, terdapat beberapa fungsi lain untuk mengendalikan fail, baca Dapatkan fail

45.png

Kami menggunakan contoh untuk menggunakan semua fungsi di atas.

Kami menulis sekumpulan fail dalam fail demo.txt:

abcdeefghijklk
opqrst
uvwxyz
12345678
><?php $filename = 'demo.txt'; echo $filename . '文件大小為: ' . filesize($filename) . ' bytes'; ?>

fgets membuka satu baris pada satu masa:

<?php
//以增加的r模式打開
$fp = fopen('demo.txt','r+');
//你分發(fā)現(xiàn)每次只讀一個字符
echo  fgetc($fp);
 
//我要全部讀取可以,讀取一次將結(jié)果賦值一次給$string
while($string = fgetc($fp)){
    echo $string;
}
?>

Dengan kod di atas, anda akan mendapati setiap bacaan membuka satu baris pada satu masa. Pulangan bacaan akhir adalah palsu.

Mari kita lihat fungsi pemintasan fail seterusnya:

<?php
//以增加的r模式打開
$fp = fopen('demo.txt','r+');
//你分發(fā)現(xiàn)每次只讀一個字符
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
?>

Dalam contoh di atas, kami mendapati bahawa kandungan boleh dipaparkan selagi ia dipintas.

5. Fungsi masa fail

46.png

<?php
//打開我們上面的demo.txt文件
$file = fopen("demo.txt", "a+");
//你可以數(shù)數(shù)20個字有多長,看看是不是達(dá)到效果了
echo ftruncate($file,20);
fclose($file);
?>



9. Mekanisme kunci fail

Mekanisme kunci fail secara amnya tidak mempunyai kesan sama sekali apabila satu fail dibuka. Bahagian pembelajaran ini sedikit abstrak.

Tidak memikirkan bagaimana untuk mencapainya?

Mengapa anda tidak dapat melihat kesannya?

Jawapan: Kerana komputer beroperasi begitu pantas, pada asasnya pada tahap milisaat. Jadi eksperimen ini sebenarnya tiada kesan.

Dalam bab ini, fahami sahaja konsep asas penguncian fail dan biasakan diri dengan fungsi penguncian fail dan mekanisme penguncian.

Penggunaan kunci fail:

Jika seseorang sedang menulis fail, orang lain turut membuka fail dan menulis fail tersebut.

Dalam kes ini, jika terdapat kebarangkalian perlanggaran tertentu, saya tidak tahu operasi siapa yang akan diguna pakai.
Oleh itu, pada masa ini kami memperkenalkan mekanisme kunci.
Jika pengguna A menulis atau membaca fail ini, tambahkan fail itu pada bahagian tersebut. Saya boleh membacanya, dan begitu juga orang lain.
Namun, jika ini berlaku. Saya menggunakan kunci eksklusif. Fail ini kepunyaan saya. Jangan sentuh kecuali saya melepaskan kunci fail.

Nota: Tidak kira sama ada kunci fail ditambahkan, berhati-hati untuk melepaskannya.

Mari kita lihat fungsi ini:

bool flock ( resource $handle , int $operation)

Fungsi : Penguncian fail perundingan ringan

Mari lihat jenis kunci:

47.png

Mari tambahkan kunci eksklusif pada demo.txt dan teruskan menulis operasi.

<?php
$filename = 'demo.txt';
if (file_exists($filename)) {
    echo "$filename文件的上次訪問時(shí)間是: " . date("Y-m-d H:i:s", fileatime($filename));
    echo "$filename文件的創(chuàng)建時(shí)間是: " . date("Y-m-d H:i:s", filectime($filename));
     echo "$filename文件的修改時(shí)間是: " . date("Y-m-d H:i:s", filemtime($filename));
}
?>

Penerangan:

Dalam contoh di atas, untuk menulis pada fail, saya menambahkan kunci eksklusif pada fail.

Jika operasi saya selesai, selepas penulisan selesai, kunci eksklusif dilepaskan.

Jika anda membaca fail, anda boleh menambah kunci kongsi mengikut idea pemprosesan yang sama.


10. Fungsi pemprosesan direktori

Sebelum kami memproses semua fail, jadi bagaimana untuk berurusan dengan direktori dan folder?

Mari kita pelajari fungsi yang berkaitan dengan pemprosesan direktori atau folder.

Idea asas memproses folder adalah seperti berikut:

Apabila membaca laluan tertentu, tentukan sama ada ia adalah folder

Jika ia adalah folder, buka folder yang ditentukan dan kembalikan fail Pembolehubah sumber direktori

Gunakan readdir untuk membaca fail dalam direktori sekali, dan penunjuk direktori diimbangi ke belakang sekali

Gunakan readdir untuk membaca hingga akhir, jika tiada fail yang boleh dibaca, kembalikan false

Tutup direktori fail

Mari kita pelajari senarai fungsi yang biasa digunakan:

48.png

<?php
$fp = fopen("demo.txt", "r+");
 // 進(jìn)行排它型鎖定
if (flock($fp, LOCK_EX)) {
    fwrite($fp, "文件這個時(shí)候被我獨(dú)占了喲\n");
   // 釋放鎖定
    flock($fp, LOCK_UN);    
} else {
    echo "鎖失敗,可能有人在操作,這個時(shí)候不能將文件上鎖";
}
fclose($fp);
?>

Oleh kerana ia dibaca sekali dan bergerak ke belakang sekali, bolehkah kita

<?php
//設(shè)置打開的目錄是D盤
$dir = "d:/";
//判斷是否是文件夾,是文件夾
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //讀取一次向后移動一次文件夾指針
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       //讀取到最后返回false
       //關(guān)閉文件夾資源
        closedir($dh);
    }
}
?>


11. >Tetapan kebenaran fail Fungsi ini biasanya digunakan dalam perisian peringkat pengurusan sistem. Contohnya: fail tertentu tidak dibenarkan untuk dilihat oleh kumpulan tetamu (pengguna tetamu).

Dalam pengurusan perusahaan, pengguna tertentu atau fail pengguna tertentu hanya dibenarkan dibaca dan tidak diubah suai. Ini adalah fungsi yang sangat biasa digunakan.

Nota:

Bab ini ialah bab pemahaman. Jika anda tidak pernah belajar Linux sebelum ini dan ia akan menjadi agak sukar, anda boleh melangkau bab ini dan mempelajarinya.

kurang berguna dalam proses pengeluaran sebenar.

Terutamanya untuk pelajar yang mempunyai sistem pengetahuan yang komprehensif di bawah Linux dan boleh fokus pada pembelajaran.

Sesetengah fungsi di bawah tingkap tidak dapat dilaksanakan.

49.pngPenggunaan fungsi di atas adalah sama seperti penggunaan operasi kebenaran Linux.

Ia agak mudah untuk pelajar yang telah mempelajari Linux. Mereka yang belum mempelajarinya akan merasa sukar sedikit.


Saya hanya akan memberi anda contoh untuk melihat cara mengubah suai kebenaran:

chmod terutamanya mengubah suai kebenaran fail

<?php
//設(shè)置打開的目錄是D盤
$dir = "d:/";
 
//判斷是否是文件夾,是文件夾
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //讀取到最后返回false,停止循環(huán)
       while (($file = readdir($dh)) !== false) {
            echo "文件名為: $file : 文件的類型是: " . filetype($dir . $file) . "<br />";
        }
        closedir($dh);
    }
}
?>



12. Fungsi laluan fail


1 ??>

Kami sering menghadapi situasi memproses laluan fail.

Contohnya:

Akhiran fail perlu dikeluarkan

Laluan perlu mengeluarkan nama tetapi bukan direktori

Hanya direktori laluan dalam nama laluan perlu dikeluarkan

Atau huraikan setiap bahagian URL untuk mendapatkan nilai bebas

Atau pun bentuk URL sendiri

... ....

Ia diperlukan di banyak tempat Fungsi kelas pemprosesan laluan.

Kami telah menandakan fungsi pemprosesan laluan yang biasa digunakan untuk semua orang Anda hanya boleh memproses fungsi pemprosesan laluan ini:

50.png

2.Pathinfo

array pathinfo (string $path)Fungsi: Lulus dalam laluan fail dan mengembalikan pelbagai komponen fail

Kami menggunakan contoh khusus Sila lihat:

<?php
//修改linux  系統(tǒng)/var/wwwroot/某文件權(quán)限為755
chmod("/var/wwwroot/index.html", 755);  
chmod("/var/wwwroot/index.html", "u+rwx,go+rx");
chmod("/somedir/somefile", 0755);
?>

Hasilnya adalah seperti berikut:

Nama direktori fail: d:/www

Nama fail penuh: lib.inc.php
Sambungan fail: php
Tiada Fail nama yang mengandungi sambungan: lib.inc

3.Nama asas

nama asas rentetan ( rentetan $path[, rentetan $akhiran ]) fungsi : Lulus dalam laluan dan kembalikan nama fail
Parameter pertama melepasi laluan.
Parameter kedua menyatakan bahawa nama fail saya akan berhenti apabila ia mencapai aksara yang ditentukan.

<?php
$path_parts = pathinfo('d:/www/index.inc.php');
 
echo '文件目錄名:'.$path_parts['dirname']."<br />";
echo '文件全名:'.$path_parts['basename']."<br />";
echo '文件擴(kuò)展名:'.$path_parts['extension']."<br />";
echo '不包含擴(kuò)展的文件名:'.$path_parts['filename']."<br />";
?>

Kesimpulan: Anda boleh melaksanakannya untuk melihat sama ada bahagian direktori fail dikembalikan.

5.parse_url

parse_url bercampur (rentetan $path)Fungsi: Pisahkan URL kepada pelbagai bahagian

<?php 
echo "1: ".basename("d:/www/index.d", ".d").PHP_EOL;
echo "2: ".basename("d:/www/index.php").PHP_EOL;
echo "3: ".basename("d:/www/passwd").PHP_EOL; 
?>
4.Dirname
dirname(string $路徑) 功能:返回文件路徑的文件目錄部份
<?php
dirname(__FILE__);
?>

Hasilnya adalah seperti berikut:

array(8) {

["scheme"]=> string(4) "http"
["host"]=> 8 ) "nama hos"
["port"]=> int(9090)
["pengguna"]=> "nama pengguna"
["pass"]=> ( 8) "kata laluan"
["path"]=> rentetan(5) "/path"
["query"]=> rentetan(9) "arg=value"
[" serpihan "]=> rentetan(6) "anchor"
}

6.http_build_query

rentetan http_build_query ($data bercampur untuk diproses ) Fungsi: Hasilkan rentetan pertanyaan dalam url

<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
?>

Hasilnya adalah seperti berikut:

nama pengguna=liwenkai&area=hubei

http_build_url()

Fungsi: Hasilkan url

Nota: Pemalar PHP_EOL
bersamaan dengan echo "rn" pada platform windows
bersamaan dengan echo "; n" pada platform unixlinux ;
Setara dengan gema "r" pada platform mac;




13. Teks buku tetamu

Kami telah bercakap tentang begitu banyak sistem pemprosesan fail, tetapi kami tidak dapat menulis perkara yang paling asas.

Bermula dari bahagian ini, anda akan mendapati bahawa anda boleh menulis lebih banyak perkara.

Seterusnya mari kita lihat kesan demonstrasi:

Antara muka borang untuk menulis kandungan mesej dalam antara muka berikut:


Antara muka paparan selepas meninggalkan mesej :

51.png

Mari kita lihat struktur fail:

index.php --- Paparkan kotak input dan kandungan mesej write.php ---Tulis data ke message.txt
message.txt ---Simpan kandungan sembang

fail indeks.php

<?php
//定義一個關(guān)聯(lián)數(shù)組
$data = [
        'username'=>'liwenkai',
        'area'=>'hubei'
         ];
//生成query內(nèi)容
echo http_build_query($data);
?>

Selepas membaca kandungan yang baru ditunjukkan, kita tahu bahawa apabila fail disimpan:

Bahagian dibahagikan antara bahagian

Kandungan dan pengguna dipisahkan sebelum menggunakan simbol khas

Jom tulis kod write.php untuk menulis mesej pada fail:

<?Php
//設(shè)置時(shí)區(qū)
date_default_timezone_set('PRC');
 
//讀了內(nèi)容
@$string = file_get_contents('message.txt');
 
//如果$string 不為空的時(shí)候執(zhí)行,也就是message.txt中有留言數(shù)據(jù)
if (!empty($string)) {
 
    //每一段留言有一個分格符,但是最后多出了一個&^。因此,我們要將&^刪掉
    $string = rtrim($string, '&^');
 
    //以&^切成數(shù)組
    $arr = explode('&^', $string);
 
    //將留言內(nèi)容讀取
    foreach ($arr as $value) {
 
        //將用戶名和內(nèi)容分開
        list($username, $content, $time) = explode('$#', $value);
 
        echo '用戶名為<font color="gree">' . $username . '</font>內(nèi)容為<font color="red">' . $content . '</font>時(shí)間為' . date('Y-m-d H:i:s', $time);
        echo '<hr />';
    }
 
}
 
?>
 
 
<h1>基于文件的留言本演示</h1>
<form action="write.php" method="post">
    用戶名:<input type="text" name="username" /><br />
 
    留言內(nèi)容:<textarea  name="content"></textarea><br />
 
    <input type="submit" value="提交" />
 
</form>
Meneruskan pembelajaran
||
<?php //linux類的讀了方式 readfile("/home/paul/test.txt"); //windows類的讀取方式 readfile("c:\\boot.ini"); ?>