Как распарсить файл формата .trk на байты в Java?

264
20 октября 2017, 12:12

Есть моделька ноты с соответствующими ей полями. Из этих нот сделана музыкальная дорожка, судя по всему у нее формат файла MIDI. Сама музыкальная дорожка перекодирована в формат .trk. Данный файл формата .trk нужно распарсить на байты и просетать их в поля ноты. Потом просетать поля следующей ноты и так далее пока дорожка не закончится. Подскажите, пожалуйста, как это сделать?

Answer 1

Байты файла можно получить с помощью библиотеки commons-io:

dependencies {
    compile "commons-io:commons-io:+"
}

С помощью кода:

private byte[] loadBytes() {
    byte[] bytes = new byte[0];
    try {
        InputStream fileInputStream = new FileInputStream(backgroundFile);
        try {
            bytes = IOUtils.toByteArray(fileInputStream);
        } finally {
            fileInputStream.close();
        }
    } catch (IOException e) {
        AppLog.printError(e);
    }
    return bytes;
}
Answer 2

Прочитать файл в массив байт можно стандартными средствами Java без использования библиотек:

public static @NonNull byte[] load(@NonNull File file) throws IOException {
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(file);
        int size = fis.available();
        byte[] buffer = new byte[size];
        fis.read(buffer);
        return buffer;
    } finally {
        if (fis != null) {
            fis.close();
        }
    }
}