【问题标题】:fread: read until "end of line" (do not cut off lines)fread:读到“行尾”(不要断行)
【发布时间】:2017-12-30 19:54:10
【问题描述】:

我想读取一个文件直到 X 字节。但是最后一行不应该像我当前的代码一样被切断:

$file = fopen("test.txt", "r");
while(! feof($file)) {
    $contents = fread($file,10000);

现在,fread 一直读取到 10000 字节。然后切断线路并创建一个新文件。该行基本上是完全存储但分为两个文件。我不想只停止和一行的结束。

有什么解决办法吗?谢谢!

【问题讨论】:

  • 你想达到什么目的?而不是 fread 使用 fgetsstream_get_line,并使用 strlen 计算行长度。您甚至可以使用file,然后在循环计数字符等上使用。
  • 我想将一个大文件拆分成较小的文件。如果我逐行进行,则需要数天(~50 kb/sec)。这就是为什么我需要像 fread 这样的东西,所以我不需要单独读取和保存每一行。
  • 这不是它的工作原理,它不会像 1 秒那样花费几天的时间,你不会将每一行存储在一个新文件中,你连接这些行并计数然后在 char 10k 处创建新文件,基本上我上面说的。你所做的事情是 fread 做不到的。
  • 你有示例代码吗?或者你能给我一些表达式来搜索吗?我不知道它是怎么调用的以及使用哪些函数。
  • 您仍然可以使用fread(),并使用fgets() 获取当前行的剩余部分。

标签: php file fopen fread


【解决方案1】:

我想我明白了:

$file = fopen("test.txt", "r");
while(! feof($file)) {
    $contents = fread($file,$eachFileSize);
    $contents = $contents . fgets($file);

有人可以确认这是预期的方式吗(例如 LawrenceCherone 建议)?

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2019-02-28
    相关资源
    最近更新 更多