问题标签 [splfileobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 取消链接和 SplFileObject
是否可以从 SplFileObject 取消链接文件?
我没有看到关闭底层资源的方法,并且文件句柄是私有的,因此无法在考虑到该目标的情况下扩展 SplFileObject。
有什么解决方法吗?
php - 使用 PHP 将制表符分隔的字符串转换为 XML
我正在尝试将变量的制表符分隔内容写入 XML,如下所示:
但它只在每个 XML 标记中写入一个字符,而不是在每个选项卡之间写入所有内容。当我使用 SplFileObject,从文件中获取相同的 tsv 数据时,它可以工作。str_getcsv 函数我做错了什么?
谢谢
php - SplFileObject 的权限被拒绝
我在 Windows7 64bit 上运行 php 5.3.8,在 xampp(我相信是最新版本,1.7.7)上。当我尝试构造一个给它一个目录路径的 SplFileObject 时,我收到以下消息(无论是在读取还是写入模式下):
无法打开流:权限被拒绝
该文件夹存在,并且我设置了适当的权限(请记住我在 Windows 上,而不是 Linux 上)。xampp 可能有问题吗?例如 Windows 不允许 apache 进程在磁盘上的任何位置写入数据?
php - 在 SplFileObject 中首次调用 fgets 不会提前文件键
考虑以下文本文件test.txt
:
并遵循 PHP 代码:
它输出:
如您所见, key 在第一次调用之前和之后都为 0 fgets()
。为什么?是有意的吗?它是一个错误吗?
行为是相同的设置SplFileObject::READ_AHEAD
标志。
我在用着PHP 5.3.10-2
谢谢!
编辑
查看SplFileObject
源代码,它认为这是一个错误。
方法key()
只返回行号:
它存储在lnum
实例变量中,初始化为零:
创建新实例时,似乎什么也没发生lnum
,因此创建后它的值仍应为 0:
然后,调用fgets
应该总是增加一个lnum
,包括第一次,这不是它正在发生的事情:
freeline
方法只是将另一个变量设置为 NULL。
编辑 2
我向 PHP 团队报告了一个错误:https ://bugs.php.net/bug.php?id=61523
php - 从文件 PHP 中删除前 X 行
我想知道是否有人知道如何在 PHP 中做到这一点。我正在运行一个脚本,该脚本涉及打开一个文件,获取前 1000 行,用这些行做一些事情,然后 php 文件打开它自己的另一个实例以获取接下来的 1000 行,依此类推,直到它到达文件的末尾. 我正在使用 splfileobject 以便我可以寻找到某一行,这使我可以很好地将其分解为 1000 行块。我遇到的最大问题是性能。我正在处理具有超过 10,000,000 行的文件,虽然它在前 10,000 行左右的速度非常快,但在那之后会出现巨大的指数放缓,我认为只需要寻找到那一点即可。
我想做的是读取前一千行,然后从文件中删除它们,以便我的脚本始终读取前一千行。有没有办法在不将文件的其余部分读入内存的情况下做到这一点。我见过的其他解决方案包括将每一行读入一个数组,然后删除前 X 个条目,但是有一千万行会占用太多内存和时间。
如果有人有可以加快性能的解决方案或其他建议,将不胜感激。
php - 为什么 PHP 文件处理程序不能正常工作?
我在“test.txt”文件中有这个内容:卢卡斯
我想在文件中寻找指针并覆盖前面的信息。假设我这样做:
这应该产生:oneas但执行的结果:lucasone
我对代码逻辑很着迷,甚至不起作用?
如何正确地做我想做的事?
php - PHP 的 SplFileObject 类的 C++/VC++ 替代方案
是否有任何与 PHP 相同的手动编码类SplFileObject
或 VC++ 插件可用?
请参阅问题https://stackoverflow.com/questions/10650864/fetching-nth-line-of-a-file/10650864#10650864。我想使用 C++ 来实现这一点
php - PHP LimitIterator 失败(“不支持搜索”+“无法回退文件”)
我使用SplFileObject
andLimitIterator
从位置 x 到 y 读取一个大文件的内容。
这在使用像/home/devel/stuff/myfile.log
.
当使用类似的路径http://mydomain.com:8090/devel/stuff/myfile.log
时不起作用。然而路径是正确的。
使用绝对路径时会失败吗?
错误消息是:
PHP Warning: SplFileObject::rewind() [<a href='splfileobject.rewind'>splfileobject.rewind</a>]: stream does not support seeking in ...
PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Cannot rewind file ...'
完整代码:
php - $file->eof() 在使用 PHP 的 SplFileObject 时总是返回 false
为什么我的 PHP 脚本挂起?
如果我删除最后一行 ( iterator_count(...
) 并将其替换为:
总是返回 false所以$fileObject->eof()
我得到一个无限循环。
为什么会发生这些事情?我需要计算行数。
php - $file->eof() 在 'r' 模式下使用 PHP 的 SplFileObject 时总是返回 false
为什么我的 PHP 脚本挂起?
如果我删除最后一行 ( iterator_count(...
) 并将其替换为:
总是返回 false所以$fileObject->eof()
我得到一个无限循环。
为什么会发生这些事情?我需要计算行数。