Go 仅当文件自上次调用os.Lstat后发生更改时才调用os.Lstat
我正在尝试编写一个程序,Go 仅当文件自上次调用os.Lstat后发生更改时才调用os.Lstat,go,system-calls,Go,System Calls,我正在尝试编写一个程序,calcsize,用于计算所有子目录的大小。我想为结果创建一个缓存,并且仅当目录自上次运行程序以来发生了更改时才重新遍历该目录 比如: ./calcsize //outputs /absolute/file/path1/ 1000 Bytes /absolute/file/path2/ 2000 Bytes 我已经在用我自己的walk实现遍历dirs了,因为内置的gofilepath.walk已经在每个文件上调用了Lstat 有没有办法在不调用每个文件的Lstat的情
calcsize
,用于计算所有子目录的大小。我想为结果创建一个缓存,并且仅当目录自上次运行程序以来发生了更改时才重新遍历该目录
比如:
./calcsize
//outputs
/absolute/file/path1/ 1000 Bytes
/absolute/file/path2/ 2000 Bytes
我已经在用我自己的walk实现遍历dirs了,因为内置的gofilepath.walk
已经在每个文件上调用了Lstat
有没有办法在不调用每个文件的
Lstat
的情况下知道目录或文件集是否已更改?可能是一个我不知道的系统调用?这是否以及如何实现在很大程度上取决于您的操作系统。但你可以看看哪些声称提供这种服务(我从未使用过——我刚刚通过谷歌找到)
一般来说,看看任何提供“观看”功能的围棋程序。举个例子,但也有其他的(甚至可能在标准库中)。一般来说,没有。不过,您可能想看看:
使用这些数据,如果你只关心文件,你可以跳过一些stat调用。在阅读了之后,这种方法可能会有很多问题。答案肯定是正确的……我将在对问题进行研究时发现一些优化来修正我的问题。