擅长:python、mysql、java
<p>虽然文件的操作系统级别的详细信息有所不同,但通常,当您以<code>r+</code>模式打开一个文件并执行某些读或写操作时,“当前位置”将保留在最后一次读或写之后。在</p>
<p>当你这么做的时候:</p>
<pre><code>fileContents = erroredFile.read()
</code></pre>
<p>流<code>erroredFile</code>被读取到末尾,因此当前位置现在是“在末尾”。在</p>
<p>truncate函数默认使用当前位置作为截断的大小。假设文件的长度为100字节,因此当前位置“在末尾”是字节100。然后:</p>
^{pr2}$
<p>意思是“使文件的长度达到100字节”——它已经是。在</p>
<p>当前位置保留在文件末尾,因此后续的<code>write</code>将追加。在</p>
<p>假设您希望返回到文件的开头,和/或使用<code>truncate(0)</code>(请注意,<code>truncate(0)</code>将至少在类Unix的系统上,将seek位置保留在文件末尾,这样下一个{<cd3>}会在原来的原始数据所在的位置留下一个洞)。您还可以稍微聪明一点:如果要插入,只需在适当的地方覆盖和扩展(根本不需要<code>truncate</code>)。在</p>
<p>(乔尔·辛兹已经回答了第二个问题,我明白了。)</p>