Ошибка слишком длинного имени файла golang при чтении из os.Args [1] - PullRequest
0 голосов
/ 03 марта 2019

Я новичок в golang и использую ioutil.ReadFile(os.Args[1]) для извлечения пути к файлу из cli, а затем обрабатываю каждую строку, используя:

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"
)

func main()  {

    file, err := os.Open(os.Args[1])
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }

    if err := scanner.Err(); err != nil {
        log.Fatal(err)
    }
}

Теперь я могу получить вывод на stdout.Но в конце также получите следующую ОШИБКУ:

msg:"BRUMBRUM";reference:cve,CVE-2007-2810;reference:blah;
msg:"WAKANDA";reference:cve,CVE-2007-2810;reference:blah; file name too long
exit status 1

Мой путь к файлу - data/srulz.tcl.К вашему сведению, сообщение об ошибке не является частью текстового файла.

Мне нужно знать, что здесь происходит не так и как это можно улучшить?

ОБНОВЛЕНИЕ:

Предоставлен код, воспроизводимый при выпуске.

Продолжаем работать с флагом pkg, пока эта загадка не будет раскрыта

1 Ответ

0 голосов
/ 03 марта 2019

В первой строке filePath, err: = ioutil.ReadFile (os.Args [1])

Вышеуказанный шаг прочитает все содержимое файла и вернет фрагмент байта и ошибку.Переменная filePath не будет хранить путь к файлу, а хранит содержимое файла в байтах.Мне интересно, почему вы не получаете ошибку времени компиляции, поскольку переменная filepath - это кусочек байтов, тогда как os.Open (filepath) аргумент os.Open будет строковым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...