dqkv0603 2017-12-09 04:33
浏览 29
已采纳

仅当文件自上次调用os.Lstat以来已更改时才调用os.Lstat

I'm trying to write a program, calcsize, that calculates the size of all sub directories. I want to create a cache of the result and only re-walk the directory if it has changed since the last time I've run the program.

Something like:

./calcsize
//outputs 
/absolute/file/path1/ 1000 Bytes
/absolute/file/path2/ 2000 Bytes

I'm already walking the dirs with my own walk implementation because the built in go filepath.Walk is already calling Lstat on every file.

Is there any way to know if a directory or set of files has changed without calling Lstat on every file? Maybe a system call I'm not aware of?

  • 写回答

2条回答 默认 最新

  • drnf593779 2017-12-10 04:39
    关注

    In general, no. However you might want to look at: https://github.com/mattn/go-zglob/blob/master/fastwalk/fastwalk_unix.go

    And using that data you can skip some of the stat calls, if you only care about files.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 socket通信实现多人聊天室疑惑
  • ¥15 DEV-C++编译缺失
  • ¥33 找熟练码农写段Pyhthon程序
  • ¥100 怎么让数据库字段自动更新
  • ¥15 antv g6 力导向图布局
  • ¥15 quartz框架,No record found for selection of Trigger with key
  • ¥15 锅炉建模+优化算法,遗传算法优化锅炉燃烧模型,ls-svm会搞,后面的智能算法不会
  • ¥20 MATLAB多目标优化问题求解
  • ¥15 windows2003服务器按你VPN教程设置后,本地win10如何连接?
  • ¥15 求一阶微分方程的幂级数