使用子目录时如何修复文件访问?

Go 以哪种方式处理对目录和文件的读取访问?


我想读取一个文件夹,搜索 csv 文件并保存每个 csv 文件的内容,以便通过 http 请求发送内容。


这是我的代码:


func GetFileContent(fileName string) ([][]string, error) {

  file, err := os.Open(fileName)

  if err != nil {

    log.Println("There was an error:", err)

    return nil, err

  }


  defer file.Close()

  reader := csv.NewReader(file)

  reader.FieldsPerRecord = -1

  csvFileContent, err := reader.ReadAll()

  if err != nil {

    log.Println("There was an error:", err)

    return nil, err

  }

  return csvFileContent, nil

}


func GetFiles(importPath string, fileExtension string) ([]string, error) {


  var result []string


  directory, err := os.Open(importPath)

  if err != nil {

    return result, err

  }

  defer directory.Close()


  files, err := directory.Readdir(-1)

  if err != nil {

    return result, err

  }


  for _, file := range files {

    if file.Mode().IsRegular() {

      if filepath.Ext(file.Name()) == "." + fileExtension {

        log.Println("Import Files: ", file.Name())

        result = append(result, file.Name())

      }

    }

  }

  if len(result) == 0 {

    log.Println("No import files of type " + fileExtension + " found.")

    log.Println("Import skipped.")

  }

  return result, nil

}

错误:打开:没有这样的文件或目录


当我不使用应用程序的根文件夹/工作目录而是另一个(父)文件夹时出现?只要我使用 ./ 作为源文件夹,它就可以工作。


守候你守候我
浏览 171回答 2
2回答

哔哔one

在这种情况下,您可以考虑使用更高级别的filepath.Glob()代替:files, err := filepath.Glob(filepath.Join(importPath, "*.csv"))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go