我是Golang的新手,但它的明显优势之一是创建命令行工具,所以我认为一个有趣的小学习练习是在Windows上重新创建“触摸”命令。我编写了一个程序,用于在指定的文件路径或当前文件夹中创建新文件。这已经变得非常盛大,我可以毫无问题地制作一个新文件:
func create_empty_file(file_name string) bool {
filehandle, err := os.Create(file_name)
if err != nil {
return false
}
defer filehandle.Close()
return true
}
我知道这部分正在工作,因为我可以观看正在制作的文件并在程序完成后打开它。我这里的问题是,我想在创建后在VSCode中打开它,显然有一些我不明白的地方。当我尝试运行这个:os/exec
command_string := strings.Join([]string{"code", full_filepath}, " ")
run_command := exec.Command(command_string)
run_err := run_command.Run()
我打印出的内容(显然事先检查),我得到这个:run_errnil
.Run() failed with error: exec: "code C:\\Go Code\\failed_successfully.go": file does not exist
如果我复制并粘贴到命令提示符中,它会在VSCode中打开文件而不会出现问题,因此很明显,此调用有一些内容是我所缺少/不理解的。"code C:\\Go Code\\failed_successfully.go".go
我想也许它在创建之前试图打开文件,所以我查找了如何检查文件是否存在,然后使用s编写了一个简短的函数,该函数每隔几毫秒检查一次文件是否存在,并在找到它时返回。否则,它将运行一些指定的秒数,然后返回 false。我仍然得到相同的错误,所以我假设这不是问题。Ticktrue
我做的最后一件事是使用正斜杠替换所有反斜杠,这没有任何效果。strings.Replace()
关于如何在这里实现我想要的任何建议将不胜感激!
湖上湖
相关分类