我想要一个在 Linux 上获取目录条目的函数。我用过ioutil.ReadDir
,通常速度很快。但是如果我想读取一些已安装的虚拟文件系统/run/user/1000/gvfs/
,这个功能就会变得很慢。如果目录中有很多文件条目,我需要等待很长时间。
我可以ls
在终端中使用该命令,结果将是相同的。当我尝试时,ls -U -a -p -1
我立即得到了逐行输出。我尝试在 Go 中运行它exec.Command
,但它不能异步工作。Go 正在等待完整的程序输出。我做错了什么?
m.cmd = exec.Command("ls", "-U", "-a", "-p", "-1")
// for example some "slow" directory:
m.cmd.Dir = "/run/user/1000/gvfs/dav:host=webdav.yandex.ru,ssl=true,user=...../"
reader, _ := m.cmd.StdoutPipe()
bufReader := bufio.NewReader(reader)
go func() {
m.cmd.Start()
for {
line, _, err := bufReader.ReadLine()
if err != nil {
break
}
linestr := string(line)
if linestr != "./" && linestr != "../" {
fmt.Println(linestr)
}
}
}()
我需要立即在 Go 中逐行打印。
FFIVE
相关分类