Файл в кодер/декодер Base64JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Файл в кодер/декодер Base64

Сообщение Гость »


Я пытаюсь создать конвертер файлов, который преобразует любой файл в строку Base64, которая сохраняется в файл .txt. Чтобы избежать слишком большого использования памяти при декодировании/кодировании, я использую буфер, который читает файл небольшими порциями.

Код: Выделить всё

import java.io.*;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.util.Base64;
import java.util.Base64.Encoder;
import java.util.Base64.Decoder;
public class Fileconverter {
static long CHUNK_SIZE = (long) Math.pow(2, 10);
public static void encode(String path){
try {
File inputFile = new File(path);
File outputFile = new File("tmp.txt");

FileInputStream fis = new FileInputStream(inputFile);
FileOutputStream fos = new FileOutputStream(outputFile);

Encoder encoder = Base64.getEncoder().withoutPadding();

long file_len = inputFile.length();
long filesize = inputFile.length();

while(file_len > 0) {
byte[] buf = new byte[(int)Math.min(file_len, CHUNK_SIZE)];
file_len-=fis.read(buf);
fos.write(encoder.encode(buf));
System.out.print("\rProcessing: "+Math.round((((file_len*1.0/filesize*1.0)*100)-100)*(-1))+"% ");
}
fis.close();
fos.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void decode(String pName){
try {
File inputFile = new File("tmp.txt");
File outputFile = new File(pName);

FileInputStream fis = new FileInputStream(inputFile);
FileOutputStream fos = new FileOutputStream(outputFile);

Decoder decoder = Base64.getDecoder();

long file_len = inputFile.length();
long filesize = inputFile.length();

while(file_len > 0) {
byte[] buf = new byte[(int) Math.min(file_len, CHUNK_SIZE)];
file_len-=fis.read(buf);
fos.write(decoder.decode(buf));
System.out.print("\rProcessing: "+Math.round((((file_len*1.0/filesize*1.0)*100)-100)*(-1))+"% ");
}
fis.close();
fos.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
The problem is that as soon as the input file requires multiple buffers to get read, it comes out corrupted and I don't know why.


Источник: https://stackoverflow.com/questions/781 ... er-decoder
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Трансформатор кодер-декодер хорошая производительность обучения, плохая производительность авторегрессии
    Anonymous » » в форуме Python
    0 Ответы
    96 Просмотры
    Последнее сообщение Anonymous
  • Почему Java-кодер и декодер не работают правильно
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как разархивировать файл, представляющий собой строку Base64, а затем создать этот файл на своем компьютере. Base64 полу
    Гость » » в форуме C#
    0 Ответы
    125 Просмотры
    Последнее сообщение Гость
  • HDR-кодер Nvidia
    Гость » » в форуме C++
    0 Ответы
    83 Просмотры
    Последнее сообщение Гость
  • Кодер Python JSON вместо этого преобразует NaN в ноль
    Anonymous » » в форуме Python
    0 Ответы
    68 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»