php - Mengenai fwrite dan fread yang mengendalikan fail yang sama
怪我咯
怪我咯 2017-05-16 12:02:35
0
3
1915
$fp = fopen("./log", "a+");
fwrite($fp,"helloworld");
rewind($fp);
var_dump( fread($fp, 10) );
fclose($fp);

Apabila kod ini dilaksanakan, dua helloworld ditulis pada fail Mengapa ini?
Dan bagaimana untuk memahami petikan ini:

Mod kemas kini membenarkan membaca dan menulis fail yang sama; ffflush atau
fungsi penentududukan fail mesti dipanggil antara baca dan tulis atau
sebaliknya jika mod termasuk b selepas huruf awal huruf, seperti dalam
"rb" atau "w b", yang menunjukkan fail binari Nama fail terhad kepada
FILENAME_MAX aksara Fail FOPEN_MAX mungkin dibuka serentak.

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(3)
巴扎黑

Fungsi

fopen的第二个参数为模式, 有r, w, b, a等模式, 其中a表示append, 也就是附加的意思, 打开时不会清空文件(把EOF指向0), 而是把文件指针指向文件末尾. 所以这个时候如果直接写的话不会覆盖原有的内容. 通过rewind menghalakan penuding fail ke titik permulaan Penulisan pada masa ini akan menimpa kandungan asal Contohnya:

$fp = open('./log.txt', 'w+');
fwrite($fp, '12345');
fclose($fp); // 此时文件的内容一定是'12345', 无论在之前是什么
$fp = open('./log.txt', 'a+');
fwrite($fp, '67890');  // 此时文件内容为'1234567890'
rewind($fp);
fwrite($fp, 'abcde'); // 此时文件内容为'abcde67890'
fclose($fp);
大家讲道理

Terdapat dua sebab: anda berada dalam mod tambah dan belum mengosongkan helloworld terakhir, jadi kali terakhir dan masa semasa kedua-duanya ada

滿天的星座

fopen("./log", "a+"); Ayat ini bermaksud membuka fail baca-tulis dengan cara yang dilampirkan Jika fail itu wujud, kandungan asal akan dikekalkan dan data akan ditambahkan ke penghujung daripada fail tersebut.

Pada masa ini, penuding fail $fp menghala ke penghujung fail untuk operasi
fwrite($fp, '12345');

Pada masa ini, jika fread($fp, 10) dicetak secara langsung, ia akan menjadi rentetan kosong Ini kerana penuding fail $fp menghala ke hujung fail Jika panjangnya dinyatakan, membaca dan mencetak ke belakang pasti akan kosong.
Dan jika anda menambah rewind($fp); untuk memundurkan kedudukan penuding fail, anda akan mendapati bahawa penuding $fp menghala ke permulaan fail, dan mencetak fread($fp, 10) akan terhasil.

Tetapi apabila anda membuka log anda, ia dilampirkan pada penghujung fail setiap kali.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan