AES Java на USB-диске не работает - PullRequest
1 голос
/ 18 ноября 2010

У меня есть класс Java, который расшифровывает файл на основе пароля пользователя. У меня есть demo.jar и файл content.txt, который содержит зашифрованный контент. Программа запускается и на основании пароля пользователя расшифровывает файл в файл с именем content_recovered.txt

Пока я делаю это на своем компьютере, он прекрасно работает. Я кладу файлы на флешку и запускаю оттуда и она не работает. Файл content_recovered.txt создан, но пуст!

У кого-нибудь есть идеи, как заставить его работать с флешки?

1 Ответ

0 голосов
/ 19 ноября 2010

Единственная причина, по которой я могу подумать, почему это не сработает, заключается в том, что размер буфера на USB может быть больше, чем на диске, и вы, возможно, неправильно очищаете буферы выходного потока (или закрываете входной файл должным образом).

Проверьте свой код io, чтобы убедиться, что вы записываете и закрываете при записи, и убедитесь, что при чтении не открываются другие ссылки на файлы:

OutputSteam os = null;

try {
   os = new BufferedOutputStream(new FileOutputStream(folder,"content.txt"));
   writeEncryptedFile(os); // do your file writing here
} catch (Exception e) {
   e.printStackTrace(); // whatever your error logging is here.
} finally {
   if (os != null) {
      // MUST ALWAYS FLUSH BEFORE CLOSING OUTPUTSTREAM
      try { os.flush(); } catch (Exception e) {}
      try { os.close(); } catch (Exception e) {}
   }
}

Также - убедитесь, что вы закрыли свои входные файлы в блоке finally. Это поймало меня во многих случаях - но уже не так:)

...