Я предполагаю, что вы используете свой код на Windows, и поэтому вам нужно "\r\n"
в качестве разделителя строк. Вы можете получить разделитель строк, подходящий для платформы, на которой вы находитесь, вызывая io_lib:nl/0
.
Попробуйте вместо этого:
write() ->
Data = ["1","2","3"],
LineSep = io_lib:nl(),
Print = [string:join(Data, LineSep), LineSep],
file:write_file("/Documents/foo.txt", Print).
Здесь Print
является экземпляром iodata, который является либо iolist
или binary
, где iolist
сколь угодно глубокий список, состоящий из одного или нескольких символов, двоичные файлы или другие иолисты. Это чрезвычайно удобный тип данных для вывода в Erlang, потому что это означает, что вы можете избежать необходимости сгладить свои данные перед тем, как записать его в файл или отправить его через сокет. Эта версия функции write
использует форму iodata
для переменной Print
, чтобы гарантировать, что за последней строкой данных, записанных в файл, следует разделитель строк, то, что string:join/2
сам по себе не будет делать.
Большое спасибо, это то, что мне нужно! –