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を使わず、カスタム定数を使用してFILEを次のように処理することができます:
<?php
$_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__);
define('__CUR_FILE__', $_current_file);
echo __CUR_FILE__;
?>
ファイルポインタ操作関数
rewind(リソースハンドル)
関数: ポインタが戻ります最初へ
fseek (リソースハンドル, int offset [, int from_where])
関数: ファイルポインタを指定文字分後方に移動します
前回の読み込みで、fread が指定された長さのデータを読み込むことが分かりました。指定した長さの内容を次回読むときは元の位置から読み戻します。
上の図に示すように、次のことが想像できます:
1. ファイルが最初に開かれたときに、赤いアイコンが読み取られます
2. ファイルの疑似カラーが A から C まで読み取られます
3. 次回開いたとき このとき、Cの緑矢印から読み始めることができます。
demo.txt ファイルに一連のファイルを書き込みます:
abcdeefghijklk
opqrst
uvwxyz
12345678
実験を開始できます。
<?php
$fp = fopen('demo2.txt', 'r+');
//读取10个字符
echo fread($fp,10);
//指针设置回到开始处
rewind($fp);
//再读取10次看看输出的是什么
echo '<br>';
echo fread($fp,10);
echo '<br>';
//文件指针向后移动10个字符
echo fseek($fp,10);
echo '<br>';
//再看看文件中输出的是什么
echo fread($fp,10);
echo '<br>';
fclose($fp);
?>
上記の例では、fseek は指定された長さだけバイトを移動することがわかります。そして巻き戻しは毎回ファイルの先頭に戻ります。
それではどうやって最後まで進むか?バイト数を数えることができます。 fseek 中に直接後ろに移動します。
次に、ファイルサイズ統計バイトについて話しましょう。
filesizeはファイルのサイズを検出します
<?php
$filename = 'demo.txt';
echo $filename . '文件大小为: ' . filesize($filename) . ' bytes';
?>
ファイルを操作するためのその他の関数
実際には、ファイルを操作したり、ファイルを読み込んだりするための関数が他にもいくつかあります
関数名 | Function |
---|
file | ファイル全体を配列に読み込みます |
fgets | ファイルポインタから行を読み込み、末尾を読み取ってfalseを返します |
fgetc | は、ファイルポインタから文字を読み取り、最後まで読んだ後にfalseを返します |
ftruncate | は、ファイルを指定された長さに切り詰めます |
上記のすべての関数を使用する例を使用します。 demo.txt ファイルに一連のファイルを書き込みます: abcdeefghijklkopqrst
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);
?>
上の例では、コンテンツがインターセプトされている限り表示できることがわかりました。 ファイル時間関数
関数 | 関数の説明 |
filectime | ファイル作成時間 |
filemtime | ファイル変更時刻 |
fileatime | file Last訪問時間 |
りー
次のセクション
<?php
$filename = 'demo.txt';
if (file_exists($filename)) {
echo '$filename文件的上次访问时间是:' . date("Y-m-d H:i:s", fileatime($filename));
echo '$filename文件的创建时间是: ' . date("Y-m-d H:i:s", filectime($filename));
echo '$filename文件的修改时间是: ' . date("Y-m-d H:i:s", filemtime($filename));
}
?>