Linux下使用PHP时由参数“b”的想到的


  在使用PHP的时候,以前有时会用到fopen(), 现在经常用file_get_contents(),当时看到他们的参数表中都有"b"这个参数,那个时候也没多留意,只知道是二进制(binary)的意思。最近特地观察了下,才发现这个参数原来是指定打开的文件是否二进制文件,再说的正确些,指的是是否以二进制方式打开文件。

  进一步研究后又得到了一些结果,因为Linux对于二进制文件和文本文件并不区分,所以在Linux下使用上述两个函数时加不加"b"这个参数并无区别,但是在Windows下就有区别了。当Windows以二进制方式打开一个文件时和Linux是一样的,但是当以文本方式打开文件是,会自动对文件做一些转换(translate),一个例子是换行符。在Linux中换行符是"\n",无论是二进制文件还是文本文件都是如此。但是在Windows 中,文本文件里的换行符是"\r\n",这就会造成一些文件操作时的麻烦,所以有必要指定是否以二进制方式(参数b)打开文件或者以文本方式(参数t)打开文件。

  从C语言方面来看,也是如此。

相关内容