2016-06-08 2 views
-4

Я использую bufio для добавления массивов байтов в файл. Когда я использую cat на него я получаю:Чтение байтов из файла в память

[176 0 0 0 4 0 0 0 1 0 0 0 57 12 127 47 4 0 0 0 1 0 0 0 215 136 47 0 64 0 0 0 2 0 0 0 57 0 97 0 53 0 52 0 100 0 98 0 99 0 52 0 98 0 100 0 100 0 49 0 54 0 99 0 49 0 97 0 49 0 57 0 56 0 48 0 52 0 55 0 53 0 49 0 100 0 49 0 49 0 51 0 99 0 52 0 52 0 98 0 24 0 0 0 2 0 0 0 83 0 111 0 109 0 101 0 32 0 99 0 108 0 105 0 101 0 110 0 116 0 0 0 36 0 0 0 2 0 0 0 83 0 111 0 109 0 101 0 32 0 111 0 116 0 104 0 101 0 114 0 32 0 112 0 97 0 114 0 116 0 110 0 101 0 114 0][176 0 0 0 4 0 0 0 1 0 0 0 4 162 127 47 4 0 0 0 1 0 0 0 215 136 47 0 64 0 0 0 2 0 0 0 57 0 97 0 53 0 52 0 100 0 98 0 99 0 52 0 98 0 100 0 100 0 49 0 54 0 99 0 49 0 97 0 49 0 57 0 56 0 48 0 52 0 55 0 53 0 49 0 100 0 49 0 49 0 51 0 99 0 52 0 52 0 98 0 24 0 0 0 2 0 0 0 83 0 111 0 109 0 101 0 32 0 99 0 108 0 105 0 101 0 110 0 116 0 0 0 36 0 0 0 2 0 0 0 83 0 111 0 109 0 101 0 32 0 111 0 116 0 104 0 101 0 114 0 32 0 112 0 97 0 114 0 116 0 110 0 101 0 114 0][176 0 0 0 4 0 0 0 1 0 0 0 35 200 127 47 4 0 0 0 1 0 0 0 215 136 47 0 64 0 0 0 2 0 0 0 57 0 97 0 53 0 52 0 100 0 98 0 99 0 52 0 98 0 100 0 100 0 49 0 54 0 99 0 49 0 97 0 49 0 57 0 56 0 48 0 52 0 55 0 53 0 49 0 100 0 49 0 49 0 51 0 99 0 52 0 52 0 98 0 24 0 0 0 2 0 0 0 83 0 111 0 109 0 101 0 32 0 99 0 108 0 105 0 101 0 110 0 116 0 0 0 36 0 0 0 2 0 0 0 83 0 111 0 109 0 101 0 32 0 111 0 116 0 104 0 101 0 114 0 32 0 112 0 97 0 114 0 116 0 110 0 101 0 114 0] 

Так массивы байтов. Теперь я хочу, чтобы прочитать файл в память, так что я использую:

content, err := ioutil.ReadFile(filename) 

Но когда я отобразить переменную content я получаю совершенно иной вывод, чем содержимое файла (и один массив, а не много). Что не так?

+3

Без минимального рабочего примера кода не будет способный помочь вам. – nemo

+2

'iotuil.ReadFile' просто считывает байты из файла, он не знает, как интерпретировать их как структуру данных, отличную от' [] byte' – JimB

ответ

0

Вы написали это неправильно для файла. Его читаемый человеком формат должен быть двоичным.

Мое предположение вы использовали что-то вроде fmt.Fprintln(file, byte_slice) или варианты.

Должно быть fmt.Fprintf(file, "%s", byte_slice) или аналогичным.

Пожалуйста, покажите нам код, как вы пишете файл.

0

Итак, что происходит, так это то, что содержимое внутри этого файла является строкой. Когда вы вытаскиваете его из файла, он преобразует эту строку в байты. Что вам нужно сделать, это преобразовать эти байты в строку, прежде чем добавить в файл, а затем преобразовать их обратно, когда вы тянете из файла

https://play.golang.org/p/PyBXAU9rVW

Смежные вопросы