如果文件尚未更改,则在保存时增加文件的大小

时间:2014-04-09 14:18:38

标签: php file fopen filesize

如果您知道文件函数filesize($file_path)的大小 它的大小为A bytes

打开文件并输出textarea中的内容。 无需进行任何更改,请将其保存:

如果您随后打开文件

$save_file = fopen($file_path, 'w'); 
if ($save_file) 
{
   // Write new data to a file 
   $do_write = fwrite ($save_file, stripslashes ($_POST['file'])); 

   if ($do_write) 
   {
     $message = "Success"; 
   } 
   else 
   {
     $message = "Error"; 
   } 
} 
else 
{
  $message = "Error"; 
} 

再次查看文件大小函数filesize($file_path),它的大小为B bytesA < B

问题:如果文件本身及其内容未被更改,为什么我会得到文件的大小?

2 个答案:

答案 0 :(得分:0)

如果文件已有内容,则写入具有'w'权限的文件将附加到该文件。还要记住,文件名的长度会影响文件使用的字节数。

例如,将file.ext备份为file.ext.bak会使file.ext.bak长3个字节。

答案 1 :(得分:0)

您可能正在向文件中添加空格而不知道它。我会尝试使用git跟踪更改,看看有什么变化。你也可以do a diff in shell。 a检查文件是否已更改而不检查文件大小的一种好方法是对其进行散列。这是你做的:

$hash = hash_file('md5', '/internal/path/to/file.txt');

// Code to store hash code in database/file.

然后检查它是否已更改执行相同的操作并将其与存储的哈希进行比较。这比filesize更可靠,因为文件中的元数据(名称,扩展名,权限)可以更改文件大小并保持文件内容不变。