1

r+我已经使用模式打开了我的文件。我对它做了一些改动,我想删除它从 X 开始到文件末尾的内容。

不幸的是,我不知道该怎么做。我一直在浏览文档,但没有提及。

我不想写入:space:文件,所以它“看起来”好像被清除了,我也想让它变小。

在这种情况下,使用打开文件w不是一个选项。

4

2 回答 2

2

使用模式打开文件r+会保留当前内容;因此,我认为没有办法使用 Lua 中可用的函数截断文件的其余部分。这个SO 答案表明它可以使用reopenwith来完成w+,但是由于您指出您无法打开它进行写作,所以我认为没有办法做您想做的事情

对此脚本的测试会产生new contentextext早期内容的剩余部分在哪里):

local f = io.open("somefile", "w")
f:write("some long text")
f:close()

local f = io.open("somefile", "r+")
f:write("new content")
f:close()
于 2015-09-28T15:24:36.773 回答
0

根据我的经验,我发现在Lua中截断文件的唯一方法是在模式下将内容写入辅助文件"w+",然后重命名辅助文件以覆盖原始文件。当然,您可能希望根据文件的大小谨慎使用此方法。

在此示例"path"中是原始文件的路径

local file, err = io.open( path + ".tmp", "w+" )
if not file then return end

file:write( truncated_data )
file:close( )

assert( os.rename( path + ".tmp", path ) )
于 2018-05-09T05:27:32.320 回答