@VadimRublev
Go, front-end (ванильный).

Почему при открытии файла срабатывает ошибка «The system cannot find the file specified»?

Почему-то в блоке с функцией ReadDir() не может открыть файл. Срабатывает ошибка ERR_1.
filesDir, err := ioutil.ReadDir(DirFiles)
    if err != nil { log.Fatal(err) }
                    
    for _, fileDir := range filesDir {
        if filepath.Ext(fileDir.Name()) == ".html" {
            // Чтение содержимого файла построчно.
            my_File, err := os.Open(fileDir.Name())
                if err != nil {
                    fmt.Println("ERR_1. Ошибка открытия файла:", err)
                    return
                }
                defer my_File.Close()

                var scanner = bufio.NewScanner(my_File)
                ...
        }
    }

Хотя такое же открытие файла в рядом стоящем блоке функции Walk() работает нормально.
Почему так?
  • Вопрос задан
  • 1042 просмотра
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Предполагаю, что после замены os.Open(fileDir.Name()) на os.Open(path.Join(DirFiles, fileDir.Name())) всё заработает.

Думаю, что проблема вот в чём.
Скорее всего у вас структура файлов близка к этой
./files/file1
main.go
Вы получаете список файлов из папки ./files/, и в os.Open передаётся только название файла (file1.go), т.е. os.Open пытается открыть его в текущей папке, а не в папке ./files/, по этому и не может его открыть.
А если передать в os.Open("./files/file1") - тогда всё заработает (при условии, что есть права на это)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы