作者kenshieh ( )
看板Web_Design
标题Re: [问题] PHP的读txt档问题
时间Sun Dec 5 16:23:47 2004
※ 引述《iamstudent (java)》之铭言:
: 我现在已经会读取档案,写入档案...
: 但是这些方法似乎都是单方向的
: 只能从档案头往档案尾
: 如果我想要这样动作
: 读到特定的值
: 然後可以拉回来
: 修改这个位置的字再继续往下
: 更正确的说
: 我有没有办法对一个txt档的指定某一行作修改?
: 因为我不想用资料库
: 如果可以做到这一点就可以省掉资料库了
纯文字档要修改很麻烦。
一般有的做法是,
1. 读出来到修改前位置放到 a.txt => 加入修改後的内容 => 读剩下的内容 => 将 a.txt
改为新的档案名称。
2. 再来还可以用 fseek() 来做,但因为是文字档,除非你格式固定,不然你抓不到你要
位移的长度。
所以一般人会把那些要修改的存成 binary 档,但 php 不像 c 一样有 struct ,所以
只能用 array 等方式来模拟。 有一个 serialize() 函式是在处理有关这方面的东西。
但如果真的只是文字档,又要修改,不建议直接存成文字档,除非你文字档格式是固定的
或者你要使用上面说的第 1 种方法,不然在处理东西上,会麻烦很多。 但如果你的文字
档量是很庞大的话,也不建议存成 binary 档,因为这样读进来有点耗记忆体。 所以要
依照你的需求去变通了。
存成文字档: 不管在新增/修改/删除都蛮耗 IO 动作,但阅读容易,也不用另外将二进位
转成文字档。
存成 binary 档: 新增/修改/删除 比较简单,但对记忆体比较伤。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.119.199.112
※ 编辑: kenshieh 来自: 140.119.199.112 (12/05 16:28)
1F:推 iamstudent:谢谢 140.113.123.227 12/06