Home  >  Article  >  Backend Development  >  关于PHP使用fread读取文件总是会多一个空字符的有关问题

关于PHP使用fread读取文件总是会多一个空字符的有关问题

WBOY
WBOYOriginal
2016-06-13 10:29:371040browse

关于PHP使用fread读取文件总是会多一个空字符的问题
代码如下:

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->$fileSize = filesize($filePath);$handle = fopen($filePath, "rb");while (!feof($handle)) {        var_dump(fread($handle, $fileSize));        //会多输出一次空字符}



求教,谢谢!

------解决方案--------------------
fread($handle, $fileSize)
文件中正好有 $fileSize 字节的内容,读取顺利,因此程序并没有检测到文件已到底。那么就会执行第二次循环,而此时指针位于最后一位,再没有什么可读的了,因此系统才将文件指针设为触底,这样feof()才会返回true。php操作文件系统和C几乎没什么区别,这方面有关于C的feof()有很详细的讲解
------解决方案--------------------
其实我也并没有说到点子上.至于解决方法,可以对 $fileSize+1.或者你完全可以不用循环 fread($handle, filesize ($filename)); 即可读取全部文件内容。
------解决方案--------------------
trim() 一下?
------解决方案--------------------
如果文件不大,就全读到数组,去掉最后一个吧。如果文件较大,另想其法了,不过没有发现多了这个会影响什么呀。真的影响了,想去掉应该也不是什么难事。
------解决方案--------------------
因为你是WINDOWS平台,文件是文本打开存储的内容,末尾会有一个特殊字节标识文件结束,你用rb打开自然就可以读到最后那个特殊字节了。

用r打开,fgets读吧。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn