首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将部分块写入现有文件?

如何将部分块写入现有文件?
EN

Stack Overflow用户
提问于 2019-01-11 10:45:07
回答 1查看 49关注 0票数 0

我需要将来自多个来源的数据上传到一个文件中,这些数据块是按任何顺序排列的,而且我很难将它们写入文件中。

下面是一个例子:

代码语言:javascript
复制
function create_file($path, $size_b) {
    $f = fopen($path, "w");
    fseek($f, $size_b - 1, SEEK_CUR);
    fwrite($f, "0");
    fclose($f);
}

function write_file_chunk($path, $offset, $chunk) {
    $f = fopen($path, "w");
    fseek($f, $offset, SEEK_CUR);
    fwrite($f, $chunk);
    fclose($f);
}

$name = "boo.txt";
create_file($name, 128);
write_file_chunk($name, 10, "hello");
write_file_chunk($name, 0, "hello");

问题是,fwrite只是将字符串写到指定的位置,然后在那里结束文件,而不管文件后面是否有数据。

有没有一种方法可以使fwrite不触及文件的其余部分,这样我就可以随意地填写该文件了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 11:16:12

fopen模式w将文件截断为零长度。

使用r+,正如用户对fseek的评论所建议的那样,http://php.net/manual/en/function.fseek.php#81450

如果您使用file ()将数据写入文件,请记住以"r+“模式打开该文件,例如: $fp=fopen($filename,"r+"); 不要以模式"a“打开文件(用于追加),因为它将文件指针放在文件的末尾,并且不允许您在文件中寻找前面的位置(它不是针对我的!)另外,不要以"w“模式打开文件--尽管这会使您处于文件的开头--因为它会清除文件中的所有数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54144920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档