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