Я пытаюсь зашифровать строку и хранить зашифрованные байты в примитивном массиве байтов, используя CipherOutputStream
, который поддерживается ByteArrayOutputStream
, но размер объекта ByteArrayOutputStream
остается равным нулю, и он не кодирует никаких байтов после того, как что-то записано в CipherOutputStream
. Вот код.Почему CipherOutputStream не может писать ByteArrayOutputStream?
ByteArrayOutputStream out = new ByteArrayOutputStream();
CipherOutputStream cos = new CipherOutputStream(out, c);
PrintWriter pw = new PrintWriter(cos);
pw.println("Write something");
cos.flush();
out.flush();
System.out.println(out.size());
pw.close();
Так что я попытался сделать сравнение путем изменения ByteArrayOutputStream
к FileOutputStream
, используя этот код. Оказалось, что зашифрованные байты записываются в целевой файл. Кто-нибудь знает, почему я не могу использовать ByteArrayOutputStream
здесь? Можете ли вы предложить решение?
FileOutputStream out = new FileOutputStream("/path/encrypted.txt");
CipherOutputStream cos = new CipherOutputStream(out, c);
PrintWriter pw = new PrintWriter(cos);
pw.println("Write something");
pw.close();
Даже если я смывать, он по-прежнему пуст. Первоначально я не использую 'PrintWriter', а пишу прямо в' CipherOutputStream', который тоже получается. Вот почему я так расстроен. – gigadot
@gigadot: Во всяком случае, вы пытались закрыть поток перед проверкой содержимого? – axtavt
Да, это работает, но почему? Я думал, что промывка должна делать то же самое, почему метод флеша существует? В любом случае, спасибо. – gigadot