Итак, я в основном разрабатываю настольное приложение, в котором вы предоставляете файл, который сжимает его и возвращает вам в формате сжатой строки.Под этим я подразумеваю, что я читаю байты файлов, сжимаю эти байты и затем в основном преобразую их в необработанный файл .txt.Процесс преобразования прост, я пытаюсь выяснить, как сжать файл.Я знаю, что хочу выполнить сжатие данных без потерь, потому что именно так я собираюсь распаковать файл, но я просто не знаю, какой алгоритм сжатия использовать или нужно ли мне что-то программировать самостоятельно.
Например:
public String CompressFile(Bytes fileInformation[]) {
for(int i = 0; i < fileInformation; i++) {
if(fileInformation[i].equals(fileInformation[i + 1]) {
// Say that the file has two instances of the same byte than no need to
// include it twice or thrice.
}
}
}
Выше приведен очень простой пример.Но я хочу что-то более сложное, способное сжимать файлы до тех пор, пока не останется истинная энтропия или случайность.Нет больше сжатия, это настолько случайно, насколько вы можете получить.И из этих данных я могу распаковать файл и представить его пользователю, когда он предоставит мне сжатые данные.Проще говоря, я хотел бы использовать алгоритм сжатия, который является эффективным, быстрым, работает и является мощным.Заранее спасибо.
Редактировать: Чтобы лучше сказать, мне нужно сжать или уменьшить строку или последовательность байтов, которые содержит файл, а не сам файл.
Суть этого вопроса в том, что я хочу сжать массив int.Например, если у меня есть массив {1, 4, 5, 1, 4}, я хочу сгруппировать единицы и четверки вместе.Это не так полезно, но, поскольку массив масштабируется, алгоритм сжатия может помочь значительно уменьшить длину массива.