2017-05-24 1 views
-1

Ich habe ein Problem mit dem Schreiben in Eigenschaftendatei über .jar-Datei. Meine 'Ausgabe' funktioniert nur in Eclipse, aber ich weiß nicht, wie ich sie ändern und in der ausführbaren .jar-Datei arbeiten lassen kann.Schreiben in Eigenschaftendatei von .jar ausführbare Datei

 FileOutputStream output = new FileOutputStream("src/application/data.properties",true); 
     InputStream in = Login.class.getResourceAsStream("data.properties"); 
     properties.load(in); 

     properties.setProperty(username+"Username", username); 
     properties.setProperty(username+"Password", password); 
     properties.store(output, formattedDate); 

EDIT:

ich keine Fehler bekommen. Ich möchte diesen 'Benutzernamen' und 'Passwort' in der Datei data.properties speichern, die in einem Projekt enthalten ist. Wenn ich es in Eclipse starte, funktioniert es. Wenn ich es mit .jar-Datei ausführe, schreibt es diese Daten nicht in die Eigenschaftendatei. Ich nehme an, es ist, weil, wenn es "Ausgabe" erstellt, während jar ausgeführt wird, es nur lokal erstellt wird, und es mir den Zugriff auf die entsprechende Datei nicht bietet, aber ich könnte falsch liegen. Ich bekomme diesen Zugriff und ich kann an dieser vorhandenen Datei arbeiten, wenn ich 'in' by .getResourceAsStream() erstelle, aber nicht weiß, wie 'Ausgabe' auf ähnliche Weise erzeugt wird und Daten in bereits existierender Datei speichern kann Projekt. Ich erstelle .jar in Eclipse durch "Export -> Runnable JAR-Datei" und führen Sie es durch einen Doppelklick aus.

+2

Sie haben keine ausreichenden Informationen zur Verfügung stellen. Was bekommst du? Was willst du? Wie erstellst du dieses Glas? Wie führst du es? Wir können es nicht erraten. – Nathan

+1

Wenn es als jar an einem anderen Ort ausgeführt wird, sind die Ordner "src/application" wahrscheinlich nicht vorhanden. Erhalten Sie einen Fehler? –

+0

Ich bekomme keine Fehler. – Tomek

Antwort

1
  1. Ich werde eine Vermutung riskieren: getResourceAsStream ist ein Strom zurückkehrt die Eigenschaften innerhalb die JAR-Datei zu lesen, während FileOutputStream wird außerhalb die JAR-Datei eine Adressierung - die Eigenschaften innerhalb des JAR nie geändert wird!

    Es ist nicht trivial, eine Datei in einem (laufenden) JAR zu überschreiben! Das Jar muss dafür neu erstellt werden. Wahrscheinlich besser nur schreiben/lesen von einer externen Datei, das heißt, FileInputStream anstelle von getResourceAsStream verwenden. Es ist auch etwas seltsam, auf eine Datei im Verzeichnis "src" zuzugreifen, da diese normalerweise nicht im bereitgestellten System/Code enthalten ist.

  2. Mit FileOutputStream(..., true) werden die Daten an das Dateiende angehängt - es werden die Daten für einen vorhandenen Benutzer nicht überschrieben. Nicht sicher, ob das ein Problem ist oder ob dieser Code nur für neue Benutzer aufgerufen wird ?!

  3. klare Passwörter (Datei oder Datenbank) Speicher ist eine potenzielle Bedrohung für die Sicherheit ...

Verwandte Themen