Страницы

Поиск по вопросам

воскресенье, 14 апреля 2019 г.

Реализация в Java сигнатуры метода?

Как этот метод реализовать на java. Нужен для того чтобы проверить кодировку файлов на битовом уровне. Код: unc ::IsUTF8(unc *cpt) { if (!cpt) return 0;
if ((*cpt & 0xF8) == 0xF0) { // start of 4-byte sequence if (((*(cpt + 1) & 0xC0) == 0x80) && ((*(cpt + 2) & 0xC0) == 0x80) && ((*(cpt + 3) & 0xC0) == 0x80)) return 4; } else if ((*cpt & 0xF0) == 0xE0) { // start of 3-byte sequence if (((*(cpt + 1) & 0xC0) == 0x80) && ((*(cpt + 2) & 0xC0) == 0x80)) return 3; } else if ((*cpt & 0xE0) == 0xC0) { // start of 2-byte sequence if ((*(cpt + 1) & 0xC0) == 0x80) return 2; } return 0; } Вопрос: Как трансформировать этот метод в Java code?


Ответ

постарался максимально облегчить вашу задачу: // на счет значения не уверен, подставьте нужное private static final int UTF8_HEADER_SIZE = 8 ;
public static boolean isUTF8 (String path) { return isUTF8(new File(path)) ; }
public static boolean isUTF8 ( File file ) { // validate input if (null == file) { throw new IllegalArgumentException ("input file can't be null"); } if (file.isDirectory ()) { throw new IllegalArgumentException ("input file refers to a directory"); }
// read input file byte [] buffer = new byte[UTF8_HEADER_SIZE]; try { readBytes(file, buffer) ; } catch ( IOException e ) { throw new IllegalArgumentException ("Can't read input file, error = " + e.getLocalizedMessage () ); }
// validate file header // TODO: your validation goes here // if (0xF0 == (buffer[0] & 0xF8) ) { // } return false ; }
private static void readBytes ( File input, byte[] buffer ) throws IOException { if (null == buffer || 0 == buffer.length) { return; }
// read data FileInputStream fis = new FileInputStream ( input ) ; fis.read ( buffer ) ; fis.close (); }

Комментариев нет:

Отправить комментарий