writeTextContent function

void writeTextContent(
  1. String absoluteFilePath,
  2. String content,
  3. String encoding,
  4. LineEndingType lineEndings,
)

Write text content to a file preserving encoding and line endings.

Implementation

void writeTextContent(
  String absoluteFilePath,
  String content,
  String encoding,
  LineEndingType lineEndings,
) {
  var finalContent = content;
  // Restore line endings
  if (lineEndings == LineEndingType.crlf) {
    finalContent = content.replaceAll('\n', '\r\n');
  } else if (lineEndings == LineEndingType.cr) {
    finalContent = content.replaceAll('\n', '\r');
  }

  final file = File(absoluteFilePath);
  if (encoding == 'utf16le') {
    final codes = finalContent.codeUnits;
    final bytes = Uint8List(2 + codes.length * 2);
    bytes[0] = 0xFF;
    bytes[1] = 0xFE;
    for (var i = 0; i < codes.length; i++) {
      bytes[2 + i * 2] = codes[i] & 0xFF;
      bytes[2 + i * 2 + 1] = (codes[i] >> 8) & 0xFF;
    }
    file.writeAsBytesSync(bytes);
  } else {
    file.writeAsStringSync(finalContent, encoding: utf8);
  }
}