Что вам нужно сделать, это взять ваши данные и поместить их в массив байтов. Затем, когда он находится в массиве байтов, вы можете зашифровать его с помощью алгоритма шифрования. Потом пишешь в файл.
Когда вы хотите вернуть исходные данные, вам нужно прочитать массив байтов из файла, затем расшифровать массив байтов, и тогда у вас будут исходные данные. Вы не можете просто прочитать эти данные в виде строки, потому что ваш алгоритм шифрования будет создавать байты, которые не могут быть представлены в виде обычных символов, поэтому ваши данные будут перепутаны.
Просто убедитесь, что вы читаете зашифрованные данные как массив байтов, а не строку, вот где у вас возникла проблема.
Если вы хотите записать несколько массивов байтов в один файл, вам, вероятно, следует сделать что-то подобное, поскольку вы используете Java:
writer.print(arr.length);
writer.print(arr);
writer.flush();
Сделайте это для каждого массива байтов. Затем, когда вы читаете массивы байтов назад:
int length = reader.readInt();
byte[] bytes = new byte[length];
// fill array
Таким образом, файл может быть структурирован следующим образом:
[длина следующего массива][массив][длина второго массива][второй массив]
Вы сможете расположить все массивы байтов вплотную друг к другу, и, поскольку каждый массив начинается с длины массива, вы будете знать, сколько данных нужно поместить в каждый массив.
person
John
schedule
17.04.2014
Files.write
сStandardOpenOption.APPEND
, поэтому вы добавите в файл. Для чтения вы можете использоватьFiles.readAllBytes
и затем проанализируйте, или, конечно, вы можете использоватьFileInputStream
. - person 2rs2ts   schedule 17.04.2014