У нас есть проект, который работает с файлами различной кодировки.Я использую BOMInputStream , чтобы пропустить маркеры порядка байтов UTF-8.Существующий код работает, но должен также поддерживать варианты UTF-16.Наиболее простой подход - передать конструктору BOMInputStream несколько ByteOrderMarkers.
За документацию ...
BOMInputStream bomIn = new BOMInputStream(in,
ByteOrderMark.UTF_16LE,
ByteOrderMark.UTF_16BE,
ByteOrderMark.UTF_32LE,
ByteOrderMark.UTF_32BE);
В сигнатуре конструктора используется аргументы переменной :
public BOMInputStream(InputStream delegate,
ByteOrderMark... boms)
Однако, когда я пытаюсь вызвать этот конструктор, используя следующий код
<cfset var fis = createObject("java", "java.io.FileInputStream").init(arguments.filePath) />
<cfset var boms = createObject("java", "org.apache.commons.io.ByteOrderMark") />
<cfset var bomins = createObject("java", "org.apache.commons.io.input.BOMInputStream").init(fis, boms.UTF_8, boms.UTF_16LE, boms.UTF_16BE) />
, я получаю следующую ошибку ...
Unable to find a constructor for class org.apache.commons.io.input.BOMInputStream that accepts parameters of type ( java.io.FileInputStream, org.apache.commons.io.ByteOrderMark, org.apache.commons.io.ByteOrderMark, org.apache.commons.io.ByteOrderMark ).
Я попробовал только одинАргумент BOM, а также получить ту же ошибку с меньшим количеством аргументов в ошибке.Таким образом, кажется, что CF не может вызывать конструкторы Java с неограниченными аргументами.Это правильно, и если да, то есть ли какая-нибудь известная работа?