共通ファイル関數(shù)の定數(shù)
次の定數(shù)は最も一般的に使用されます。ファイルディレクトリの區(qū)切り文字である定數(shù)です。
形式を見(jiàn)てみましょう:
Windowsのパス形式はd:xxxxxxです 注: Windowsはd:/xxx/xxxをサポートします
Linuxのパス形式は/home/ですxxx/xxx 注: Linux で homexxxxxx が間違っている場(chǎng)合
そのため、エスケープなどを有効にした場(chǎng)合、エスケープ文字を併用すると d:xxxxxx が同じになります。判斷する場(chǎng)合、2 つある場(chǎng)合は 1 つに変換し、/ を置き換えてパスを分割すると、Linux または Windows 上のパスが統(tǒng)一されたままになります。
定數(shù)を使用します:
DIRECTORY_SEPARATOR
現(xiàn)在のファイルのパスを定義する小さな例を書(shū)いてみましょう:
FILE は PHP の事前定義された定數(shù)なので、必要に応じて変更する方法はありません。また、オペレーティング システムに自動(dòng)的に適応します。
その場(chǎng)合、FILE を使用せずに、カスタム定數(shù)を使用して、次のように FILE を処理できます:
<?php $_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__); define('__CUR_FILE__', $_current_file); echo __CUR_FILE__; ?>
ファイルポインタ操作関數(shù)
rewind (リソースハンドル)
機(jī)能: ポインタが先頭に戻ります
fseek (resource handle, int offset [, int from_where])
関數(shù): ファイルポインタを指定された文字だけ後方に移動(dòng)します
前の読み取りでは、fread が指定された長(zhǎng)さのデータを読み取ることがわかりました。指定した長(zhǎng)さの內(nèi)容を次回読むときは元の位置から読み戻します。 ?
3. 次回開(kāi)きます この時(shí)はCの緑矢印から読み始めることができます。
opqrst
uvwxyz12345678
実験を開(kāi)始できます。
<?php $fp = fopen('output.txt', 'r+'); //讀取10個(gè)字符 echo fread($fp,10); //指針設(shè)置回到開(kāi)始處 rewind($handle); //再讀取10次看看輸出的是什么 echo fread($fp,10); //文件指針向后移動(dòng)10個(gè)字符 echo fseek($fp,10); //再看看文件中輸出的是什么 echo fread($fp,10); fclose($handle); ?>
上記の例では、fseek は指定された長(zhǎng)さだけバイトを移動(dòng)することがわかります。そして巻き戻しは毎回ファイルの先頭に戻ります。
それではどうやって最後まで進(jìn)むか?バイト數(shù)を數(shù)えることができます。 fseek 中に直接後ろに移動(dòng)します。
次に、ファイルサイズ統(tǒng)計(jì)バイトについて話しましょう。
<?php $filename = 'demo.txt'; echo $filename . '文件大小為: ' . filesize($filename) . ' bytes'; ?>ファイルを操作するためのその他の関數(shù)実際には、ファイルを操作したり、ファイルを読み込んだりするための関數(shù)が他にもいくつかあります
上記のすべての関數(shù)を使用する例を使用します。
demo.txt ファイルにファイルのバッチを書(shū)き込みます:
abcdeefghijklk
opqrst
uvwxyz
12345678
<?php //以增加的r模式打開(kāi) $fp = fopen('demo.txt','r+'); //你分發(fā)現(xiàn)每次只讀一個(gè)字符 echo fgetc($fp); //我要全部讀取可以,讀取一次將結(jié)果賦值一次給$string while($string = fgetc($fp)){ echo $string; } ?>
fgets は一度に 1 行ずつ開(kāi)きます:
<?php //以增加的r模式打開(kāi) $fp = fopen('demo.txt','r+'); //你分發(fā)現(xiàn)每次只讀一個(gè)字符 echo fgets($fp); echo fgets($fp); echo fgets($fp); echo fgets($fp); ?>
上記のコードでは、1 行が読み取りごとに一度に開(kāi)かれます。最終的な読み取りの戻り値は false です。
次にファイルインターセプト関數(shù)を見(jiàn)てみましょう:
<?php //打開(kāi)我們上面的demo.txt文件 $file = fopen("demo.txt", "a+"); //你可以數(shù)數(shù)20個(gè)字有多長(zhǎng),看看是不是達(dá)到效果了 echo ftruncate($file,20); fclose($file); ?>
上の例では、コンテンツがインターセプトされている限り表示できることがわかりました。
りー