0

new.txt(すでに2行で構成されている)ファイルに行を書き込むこのコードがあり、その後、このtxtコンテンツを新しいtmp.txtファイルにコピー(バックアップ)しますが、fread()はnew.txtファイルから新しい行を欠落し続けますtmp.txt にコピーするには、tmp.txt に 3 行あると仮定しますが、新しく追加された行がありません。

$File ="new.txt";
$File2="tmp.txt";


//write into file
$handle = fopen ($File, 'a') or die("Cannot open File");    
fwrite($handle,"some string");
fclose($handle );

//copy file
$handle2= fopen ($File, 'r') or die("Cannot open File");
$content = fread($handle2, filesize($File));
fclose($handle2);   

$handle3 = fopen ($File2, 'w') or die("Cannot open File");  
fwrite($handle3,$content);
fclose($handle3 );
4

2 に答える 2

0

のドキュメントfilesizeから:

注:この関数の結果はキャッシュされます。詳細については、を参照clearstatcache()してください。

そのリンクをたどると、質問に完全に答える次の追加情報が得られます。

stat()lstat()、または影響を受ける関数のリスト (下記) に記載されているその他の関数を使用すると、PHP はこれらの関数が返す情報をキャッシュして、パフォーマンスを向上させます。ただし、場合によっては、キャッシュされた情報をクリアしたい場合があります。たとえば、1 つのスクリプト内で同じファイルが複数回チェックされており、そのスクリプトの操作中にそのファイルが削除または変更される危険性がある場合は、ステータス キャッシュをクリアすることを選択できます。このような場合、このclearstatcache()関数を使用して、PHP がファイルに関してキャッシュする情報をクリアできます。

ドキュメントはあなたの友達です。これを使って!

于 2013-05-08T10:21:56.603 に答える
0

コマンド fread() は、同じものではないファイルサイズではなく、読み取るコンテンツの長さを2番目の引数として受け取ります。とにかく、fread() の代わりに copy() を使用してファイルを複製することをお勧めします。

//replacement for your copy file
copy($handle1, $handle2);
于 2013-05-08T08:13:55.820 に答える