why-元夕 2025-04-25 20:39 采纳率: 0%
浏览 6

路径拼接,搜索漏掉文件

我翻了我的历史学习记录,递归模块也是cv过来的,此问题发问前我仍不知道 我的路径拼接哪里有问题,程序的实际表现,漏掉文件
这是源码


```go
package mainser

import (
    "fmt"
    "golang.org/x/sys/windows"
    "os"
    "path/filepath"
    "strings"
    "sync"
    "unsafe"
)

var end = make(chan bool)
var pathC = make(chan string)
var end_path string
var find_target = "1.txt"

var maxgo = 256
var mingo = 0
var once sync.Once

var First = "H:\\" //给到的初始路径

func Search_target(path string, is bool) { //这里path用于组建
    //初始化
    user32 := windows.NewLazySystemDLL("user32.dll")
    messageBox := user32.NewProc("MessageBoxW")

    //文件搜索
    files, err := os.ReadDir(path)
    if err != nil {
        text, _ := windows.UTF16PtrFromString("文件打开错误,请填写正确的路径")
        caption, _ := windows.UTF16PtrFromString("文件打开错误,请填写正确的路径")
        messageBox.Call(0, uintptr(unsafe.Pointer(caption)), uintptr(unsafe.Pointer(text)), 0)
        return
    }
    for _, needfind := range files {
        file_name := needfind.Name()
        if strings.Contains(file_name, find_target) {
            end_path = filepath.Join(path, file_name)
            fmt.Println(end_path)
            end <- true

            return
        }

        if needfind.IsDir() {
            if maxgo > mingo {
                path := filepath.Join(path, file_name)
                pathC <- path
            } else {
                path := filepath.Join(path, file_name)
                Search_target(path, false)
            }
        }
    }

    if is {
        end <- true
    }
}

func with() {
    for {
        select {
        case need := <-pathC:
            mingo++
            go Search_target(need, true)

        case <-end:

            mingo--
            if mingo == 0 {

                return
            }

        }

    }
}

func Goone() {

    go with()
    Search_target(First, true)

}




问题 路径拼接,chanselect 的问题 ,漏掉文件  ,我使用是模糊匹配
  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-04-25 20:40
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    路径拼接,搜索漏掉文件

    你的问题是关于 Go 语言中路径拼接和搜索漏掉文件的问题。

    根据你提供的代码,问题可能出在路径拼接的实现上。Go 语言中使用 path.Join() 函数来拼接路径,这个函数可以正确地处理路径的分隔符和根目录。

    在你的代码中,你可能使用了 os.PathSeparator 来拼接路径,这可能会导致问题。os.PathSeparator 是一个平台相关的常量,表示文件系统的分隔符(例如 / 在 Unix 系统中,\ 在 Windows 系统中)。使用 os.PathSeparator 可能会导致路径拼接出错。

    建议使用 path.Join() 函数来拼接路径,例如:

    package mainser
    
    import (
      "path/filepath"
    )
    
    func main() {
      dir := "/path/to/dir"
      file := "file.txt"
      filePath := filepath.Join(dir, file)
      // ...
    }
    

    这样可以确保路径拼接正确。

    如果你仍然遇到问题,可以提供更多的代码和详细的错误信息,以便更好地帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月25日