`no such file or directory` with `os.Remove`

我使用 Cobra 框架向我的 CLI 应用程序添加了一个新命令。该命令应该启动接受套接字连接的 TCP 服务器。它接收一个有效负载,它是absolute一个文件/目录的路径,并尝试删除它。这是命令的代码


package cmd


import (

    "bufio"

    "fmt"

    "net"

    "os"


    "github.com/spf13/cobra"

    "wpgenius.io/util"

)


var cachePurgerCmd = &cobra.Command{

    Use:   "cache-purger",

    Short: "Listen for request to purge NGINX page cache",

    Run: func(cmd *cobra.Command, args []string) {

        dstream, err := net.Listen("tcp", ":9876")


        if err != nil {

            util.HandleError(err, "Can not start listener..")

            return

        }


        fmt.Println("Listening for purge requests...")


        defer dstream.Close()


        for {

            con, err := dstream.Accept()


            if err != nil {

                util.HandleError(err, "Can not accept connection")

                os.Exit(1)

            }


            go handleRequest(con)

        }

    },

}


func handleRequest(con net.Conn) {

    path, err := bufio.NewReader(con).ReadString('\n')


    if err != nil {

        return

    }


    defer con.Close()


    err = os.Remove(path)


    if err != nil {

        con.Write([]byte("ERROR"))

        fmt.Println(err)

        util.HandleError(err, "Can not delete cache file")

        return

    }


    con.Write([]byte("SUCCESS"))

}


func init() {

    rootCmd.AddCommand(cachePurgerCmd)

}


尽管文件/目录存在,但我仍然会no such file or directory出错。我通过简单地将它添加os.Remove到main函数中来进行健全性检查,以确保它与路径无关,并且我可以看到它成功删除了文件/目录。


我不确定它是否go routing与tcp server!


任何帮助将不胜感激!


茅侃侃
浏览 93回答 1
1回答

Cats萌萌

我想重点是您输入的路径中的 \n 。
打开App,查看更多内容
随时随地看视频慕课网APP