2010-11-18 6 views
1

Ich habe Java-Klasse, die eine Datei basierend auf einem Benutzerkennwort entschlüsseln. Ich habe eine demo.jar und eine Datei content.txt, die den verschlüsselten Inhalt enthalten. Das Programm läuft und basierend auf dem Benutzer-Passwort entschlüsseln Sie die Datei in eine Datei mit dem Namen content_recovery.txtAES Java auf USB-Laufwerk funktioniert nicht

Solange ich dies auf meinem Computer tun, funktioniert es gut. Ich lege die Dateien auf ein Flash-Laufwerk und starte es von dort und es funktioniert nicht. Die Datei content_recovered.txt wird erstellt, ist aber leer!

Jeder hat eine Idee, wie man es von einem Flash-Laufwerk funktioniert?

Antwort

0

Der einzige Grund, warum ich denken könnte, dass dies nicht funktionieren würde, ist, dass die Puffergröße auf einem USB möglicherweise größer als auf der Festplatte ist und Sie die Ausgabestreampuffer möglicherweise nicht ordnungsgemäß leeren (oder die Eingabedatei ordnungsgemäß schließen).

Überprüfen Sie io-Code, um sicherzustellen, dass Sie Spülung und Schließen beim Schreiben, und darauf achten, dass es keine anderen Dateiverweise offen beim Lesen:

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) {} 
    } 
} 

auch - stellen Sie sicher, dass Sie Ihre Eingabe schließen Dateien im finally Block auch. Dies hat mich bei vielen Gelegenheiten erwischt - aber nicht mehr :)

+0

Die Dateien sind ordnungsgemäß geschlossen, so dass es aus der Puffergröße kommen könnte. Wie kann ich das beheben? Wegen der Puffergröße ist mein Code derselbe. – user512684

+0

Stellen Sie einfach sicher, dass Sie flush() vor close() aufrufen, und der Puffer sollte kein Problem sein. – Chris

Verwandte Themen