Ваш код .NET, вероятно, пишет спецификацию.Совместимые читатели Unicode удаляют любую спецификацию, так как это метаданные, а не часть текстовых данных.
Ваш Java-код явно указывает порядок байтов
FileUtils.readLines(file, "UTF-16LE");
Это что-то вроде Catch-22;Если у источника есть спецификация, вы можете прочитать ее как "UTF-16".Если этого не произойдет, то вы сможете прочитать его как "UTF-16LE" или "UTF-16BE", поскольку вы знаете, что это такое.
Таким образом, либо запишите его с помощью спецификации и прочитайте его без указания порядка байтов, либо запишите его без спецификации и прочитайте его с указанием порядка байтов.
С помощью спецификации:
[C #]
File.WriteAllLines(file, lines, Encoding.Unicode);
[Java]
FileUtils.readLines(file, "UTF-16");
Без спецификации:
[C #]
File.WriteAllLines(file, lines, new UnicodeEncoding(false));
[Java]
FileUtils.readLines(file, "UTF-16LE");