问题标签 [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.

0 投票
1 回答
3643 浏览

php - 取消链接和 SplFileObject

是否可以从 SplFileObject 取消链接文件?

我没有看到关闭底层资源的方法,并且文件句柄是私有的,因此无法在考虑到该目标的情况下扩展 SplFileObject。

有什么解决方法吗?

0 投票
1 回答
1569 浏览

php - 使用 PHP 将制表符分隔的字符串转换为 XML

我正在尝试将变量的制表符分隔内容写入 XML,如下所示:

但它只在每个 XML 标记中写入一个字符,而不是在每个选项卡之间写入所有内容。当我使用 SplFileObject,从文件中获取相同的 tsv 数据时,它可以工作。str_getcsv 函数我做错了什么?

谢谢

0 投票
0 回答
1048 浏览

php - SplFileObject 的权限被拒绝

我在 Windows7 64bit 上运行 php 5.3.8,在 xampp(我相信是最新版本,1.7.7)上。当我尝试构造一个给它一个目录路径的 SplFileObject 时,我收到以下消息(无论是在读取还是写入模式下):

无法打开流:权限被拒绝

该文件夹存在,并且我设置了适当的权限(请记住我在 Windows 上,而不是 Linux 上)。xampp 可能有问题吗?例如 Windows 不允许 apache 进程在磁盘上的任何位置写入数据?

0 投票
0 回答
578 浏览

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

0 投票
2 回答
780 浏览

php - 从文件 PHP 中删除前 X 行

我想知道是否有人知道如何在 PHP 中做到这一点。我正在运行一个脚本,该脚本涉及打开一个文件,获取前 1000 行,用这些行做一些事情,然后 php 文件打开它自己的另一个实例以获取接下来的 1000 行,依此类推,直到它到达文件的末尾. 我正在使用 splfileobject 以便我可以寻找到某一行,这使我可以很好地将其分解为 1000 行块。我遇到的最大问题是性能。我正在处理具有超过 10,000,000 行的文件,虽然它在前 10,000 行左右的速度非常快,但在那之后会出现巨大的指数放缓,我认为只需要寻找到那一点即可。

我想做的是读取前一千行,然后从文件中删除它们,以便我的脚本始终读取前一千行。有没有办法在不将文件的其余部分读入内存的情况下做到这一点。我见过的其他解决方案包括将每一行读入一个数组,然后删除前 X 个条目,但是有一千万行会占用太多内存和时间。

如果有人有可以加快性能的解决方案或其他建议,将不胜感激。

0 投票
1 回答
634 浏览

php - 为什么 PHP 文件处理程序不能正常工作?

我在“test.txt”文件中有这个内容:卢卡斯
我想在文件中寻找指针并覆盖前面的信息。假设我这样做:

这应该产生:oneas但执行的结果:lucasone

我对代码逻辑很着迷,甚至不起作用?

如何正确地做我想做的事?

0 投票
1 回答
101 浏览

php - PHP 的 SplFileObject 类的 C++/VC++ 替代方案

是否有任何与 PHP 相同的手动编码SplFileObject或 VC++ 插件可用?

请参阅问题https://stackoverflow.com/questions/10650864/fetching-nth-line-of-a-file/10650864#10650864。我想使用 C++ 来实现这一点

0 投票
2 回答
2393 浏览

php - PHP LimitIterator 失败(“不支持搜索”+“无法回退文件”)

我使用SplFileObjectandLimitIterator从位置 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 ...'


完整代码:

0 投票
1 回答
229 浏览

php - $file->eof() 在使用 PHP 的 SplFileObject 时总是返回 false

为什么我的 PHP 脚本挂起?

如果我删除最后一行 ( iterator_count(...) 并将其替换为:

总是返回 false所以$fileObject->eof()我得到一个无限循环。

为什么会发生这些事情?我需要计算行数。

0 投票
3 回答
1749 浏览

php - $file->eof() 在 'r' 模式下使用 PHP 的 SplFileObject 时总是返回 false

为什么我的 PHP 脚本挂起?

如果我删除最后一行 ( iterator_count(...) 并将其替换为:

总是返回 false所以$fileObject->eof()我得到一个无限循环。

为什么会发生这些事情?我需要计算行数。