如何在Golang中检测到打开文件名的更改

jsdw

使用Go,我正在编写一个小的实用程序,部分需要注意打开文件的文件名是否更改。以下代码说明了我尝试的方法:

package main

import "os"
import "fmt"
import "time"

func main() {

    path := "data.txt"
    file, _ := os.Open(path)

    for {
        details, _ := file.Stat()
        fmt.Println(details.Name())
        time.Sleep(5 * time.Second)
    }
}

这只会启动一个无限循环,file.Stat()每5秒钟运行一次以获取文件详细信息,然后打印出名称。但是,尽管在运行时更改了文件名,但上述输出并未更改。

但是替换details.Name()details.Size()确实会注意到文件大小的更改。

这仅仅是我的Go版本中的错误,还是我做错了什么?我在任何地方都找不到这样的问题。

我正在Mac上使用Go版本1.1.1(darwin / amd64)运行它。

预先感谢您的任何答复:)

福兹

在类似Unix的操作系统上,一旦打开文件,该文件便不再与名称绑定。您获得的文件描述符仅与您打开的文件的索引节点相关。文件的所有元数据都与索引节点关联。没有简单的方法可以从inode获取文件名,因此,除非您所使用的操作系统提供了一种特殊的方法来做到这一点,否则就不可能实现所需的操作。

另外:您要观察什么文件名?一个文件可以有多个名称,也可以根本没有名称(例如典型的临时文件)。

我认为您唯一可以做的是:

  • 打开文件,记住文件名
  • 定期调用文件名上的Stat以查看inode是否匹配
  • 如果索引节点不同,则文件已被移动

但是,这不会给您新的文件名。这样的事情不可能随身携带。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Golang如何在Go中读取输入文件名

来自分类Dev

如何在C#中打开文件之前检测到损坏的文件

来自分类Dev

如何在R中更改文件名?

来自分类Dev

如何在“文本框” JQuery中检测到更改

来自分类Dev

如何在崇高文字3中复制当前打开的文件的文件名?

来自分类Dev

架构文件名未检测到命名空间

来自分类Dev

如何在C ++中的文件更改事件中获取文件名

来自分类Dev

如何在C ++中检测到空文件?

来自分类Dev

如何在jmeter-maven-plugin中更改(jtl文件的)结果文件名?

来自分类Dev

如何检测文件名中是否存在空格?

来自分类Dev

如何检测 NetSuite 记录中执行的suitescript 文件名?

来自分类Dev

更改文件名,如何?

来自分类Dev

如何从打开的连接中确定SQLite文件名?

来自分类Dev

如何在django中更改文件名和上载时的存储位置

来自分类Dev

如何在Android项目的Gradle中更改Proguard映射文件名

来自分类Dev

如何在JFileChooser中收听“文件名”文本字段上的更改?

来自分类Dev

如何在Python中按下按钮时将标签的文本更改为文件名?

来自分类Dev

如何在没有 Jackson 或 GSON 的情况下更改 POJO 类中的文件名?

来自分类Dev

如何在Dropzone Upload上更改文件名?

来自分类Dev

如何在复制 Applescript 之前更改文件名

来自分类Dev

如何更改文件夹cygwin中的文件名?

来自分类Dev

如何检测自己的文件名

来自分类Dev

如何根据文件名创建多个目录并在linux中更改文件名?

来自分类Dev

如何在更改文件名时“不”更改文件扩展名?

来自分类Dev

文件无法在 Chrome 或 Firefox 中打开,URL 中的文件名更改为“0”

来自分类Dev

如何在Perl中从文件名获取文件句柄?

来自分类Dev

如何在文件传输中显示文件名?

来自分类Dev

如何在文件列表中搜索文件名

来自分类Dev

如何在不使用stat()的情况下检测到我在C中打开()了目录?

Related 相关文章

  1. 1

    Golang如何在Go中读取输入文件名

  2. 2

    如何在C#中打开文件之前检测到损坏的文件

  3. 3

    如何在R中更改文件名?

  4. 4

    如何在“文本框” JQuery中检测到更改

  5. 5

    如何在崇高文字3中复制当前打开的文件的文件名?

  6. 6

    架构文件名未检测到命名空间

  7. 7

    如何在C ++中的文件更改事件中获取文件名

  8. 8

    如何在C ++中检测到空文件?

  9. 9

    如何在jmeter-maven-plugin中更改(jtl文件的)结果文件名?

  10. 10

    如何检测文件名中是否存在空格?

  11. 11

    如何检测 NetSuite 记录中执行的suitescript 文件名?

  12. 12

    更改文件名,如何?

  13. 13

    如何从打开的连接中确定SQLite文件名?

  14. 14

    如何在django中更改文件名和上载时的存储位置

  15. 15

    如何在Android项目的Gradle中更改Proguard映射文件名

  16. 16

    如何在JFileChooser中收听“文件名”文本字段上的更改?

  17. 17

    如何在Python中按下按钮时将标签的文本更改为文件名?

  18. 18

    如何在没有 Jackson 或 GSON 的情况下更改 POJO 类中的文件名?

  19. 19

    如何在Dropzone Upload上更改文件名?

  20. 20

    如何在复制 Applescript 之前更改文件名

  21. 21

    如何更改文件夹cygwin中的文件名?

  22. 22

    如何检测自己的文件名

  23. 23

    如何根据文件名创建多个目录并在linux中更改文件名?

  24. 24

    如何在更改文件名时“不”更改文件扩展名?

  25. 25

    文件无法在 Chrome 或 Firefox 中打开,URL 中的文件名更改为“0”

  26. 26

    如何在Perl中从文件名获取文件句柄?

  27. 27

    如何在文件传输中显示文件名?

  28. 28

    如何在文件列表中搜索文件名

  29. 29

    如何在不使用stat()的情况下检测到我在C中打开()了目录?

热门标签

归档