Converter arquivo UNIX para PC [Resolvido]


(Artur Muniz) #1

Galera,

Estou tendo que converter um arquivo de UTF-8 para windows1252 e o final da linha deve ser CRLF (PC).
A primeira parte, eu já consegui usando o iconv-lite. Para isso eu crio um readableStream e usando alguns .pipe() faço a lógica do enconding. O que eu preciso agora é de um jeito de mudar o caracter EOL de \n pra \r\n de uma maneira que eu só use mais um pipe.
Alguem pode me dar uma ideia?

fs.createReadStream('entrada.txt')
    .pipe(iconv.decodeStream('utf8'))
    .pipe(iconv.encodeStream('windows1252'))
    /*.pipe()*/ //TODO: EOL character conversion from LF to CRLF
    .pipe(fs.createWriteStream('saida.txt'))


(Artur Muniz) #2

Salve galera!
Achei a solução pro problema! Eu simplesmente precisava dar um .replace em cada \n para que virasse um \r\n. A solução mais pratica que achei foi usar o ReplaceStream. Ficou assim:
Nos meus requires:

replaceStream = require('replacestream');

E na função que corverte os arquivos

fs.createReadStream('entrada.txt')
.pipe(iconv.decodeStream('utf8'))
.pipe(iconv.encodeStream('windows1252'))
.pipe(replaceStream('\n', '\r\n'))
.pipe(fs.createWriteStream('saida.txt'));