Referenzen in einer Datei zeilenweise speichern und lesen

crombix

Grünschnabel
Hallo zusammen,

ich hoffe ihr könnt mir helfen ! Ich hab folgendens Problem, und zwar würde ich mal gerne Referenzen von Dateien speichern.. Genauer gesagt hab ich eine Klasse die irgendwelche Dateien aus einem lokalen Ordner ausliest und sie in einer Repository unter einem anderen Namen speichert (check in von svn) ! Was ich jetzt will, ist dass ich bei dieser check-in Aktion der alte Datei-Name mit einer Refrenz auf den neuen Namen gespeichert wird, und das möglichst für alle eingecheckten Dateien, so hab ich am Ende eine Datei aller Referenzen, die ich bei einer anderen Aktion (z.B commit) aulesen kann und nach meiner Referenz suchen !

Ist denn sowas überhaupt möglich ?

Danke vielmals im voraus !
Crombix.
 
Hi crombix,

ich hoffe ich verstehe dich richtig. Du willst den alten und neuen Namen in Verbindung setzen. Als erstes würde mir da eine Hashtable einfallen die als key die Referenz hat und als value den neuen Namen.

Gruß Air
 
Hi airtime,
ich hab's versucht mit einer Hashmap zu lösen, da kann man ohne probleme Referenzen speichern, aber das Problem ist, dass ich für jede Session in der mit einem neuen Namen eingecheckt wird in diese Text-Datei speichern, denn man will auch ohne dass man eigecheckt hat eine History zum Beispiel aufrufen könen für eine Datei, und da würde ich gerne bei dieser Aktion in meiner Datei schauen ob diese Datei schon mal eingecheckt wurde und wenn ja lese ich den neune Namen daraus ! es reicht mir jetzt eigentlich nur die Info wie ich Strings zeilenweise in einer Datei speichern kann und die nachher wieder lesen ! beim lesen ist kein Problem, da kann ich diese Strings interpretieren !
Danke übrigens für die schnelle Antwort !
Gruss, Crombix
 
Hi crombix,
ich verstehe immer noch nicht genau was du vor hast (brauche vielleicht einpaar infos mehr, wie: was representiert bei dir die session?). Im Grunde möchtest du eine Datei wie eine Hashmap aufbauen und durchsuchen können. Warum kannst du nicht ein unabhängiges Objekt(Hashmap) erstellen das dann den jeweiligen verlauf der Dateien mit schreibt und Methoden zum auslesen beinhaltet.
Ich meine einfach eine Hashmap die du so zusagen an deine Bedürfnisse anpasst.

Gruß Air
 
Hi Air,
stell dir mal vor du hast ein Tool mit einem svn Client ! mit dem Client kannst du wie üblich Dateien ein und auschecken ! Beim einchecken in die Repository soll aber für die Datei einen neuen Namen angegeben werden ! Will ich jetzt eine History für eine Datei holen, sucht die History-Funktion Den Datei-Namen (den alten) im Repository !! Da dieser Name nunmal beim einchecken verändert wurde, will ich der History-Funktion stattdessen den neuen Namen übergeben! Also brauch ich dafür für alle jemals eingecheckten Dateien jeweils den neuen Namen mit dem sie in der Repository angelegt wurden ! Also hab ich dran gedacht dass jedesmal beim einchecken in eine Datei geschrieben wird, die bei der History-Funktion ausgelesen wird ! Wie diese Datei ausgelesen und interpretiert wird, das hab ich schon implementiert, beim schreiben hab ich gerade das Problem dass die neuen Einträge die alten überschreiben.. Und ich will aber, dass neue Einträge immer mit einer neuen Zeile anfangen !! Das muss glaub ich nicht ganz schwer sein..Ich krieg's aber gerade nicht hin !! Oder hast du eine bessere Idee vielleicht ****
LG, Crombix.
 
Hi crombix,

ich hoffe ich verstehe dich richtig. Du willst den alten und neuen Namen in Verbindung setzen. Als erstes würde mir da eine Hashtable einfallen die als key die Referenz hat und als value den neuen Namen.

Gruß Air

Hi Air,
Das mit dem zeilenweise Schreiben in die Datei hab ich gerade hinbekommen ! Ich sollte im Konstruktor von BufferedWriter den Boolean-Parameter append übergeben ! also so deklarieren:

BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream( "ZielDatei.txt", true)));

Wenn du sonst eine Idee hat, wie man dieses Problem besser lösen kann, dann sag mir bitte Bescheid !! LG, Crombix.
 
Hi combrix,

also funktioniert es jetzt? Ich denke immer noch das mit den Dateien ist ok, aber mit einem Objekt würdest du sehr viel zeit sparen. Wenn Zeit kein Problem ist dann hat sich dein Problem wohl erledigt.

Gruß Air
 
Warum nimmst du nicht trotzdem eine HashMap zur Darstellung der Referenzen?

Hier mal ein Beispiel wie man eine HashMap (oder jeden anderen beliebigen Serialisierbaren Datentyp) in eine Datei speichern kann und diese wieder ausliest:
Java:
HashMap<String, String> referenzen = new HashMap<String, String>();

/*
 * Referenzen hinzufügen
 */

File file = new File("PFAD ZUR DATEI");

//Speichern
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(referenzen);
oos.close();

//Laden
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
Object obj = ois.readObject();
if(obj instanceof HashMap<String, String>) {
	referenzen = obj;
}
ois.close();
 
Zuletzt bearbeitet:
Hi combrix,

also funktioniert es jetzt? Ich denke immer noch das mit den Dateien ist ok, aber mit einem Objekt würdest du sehr viel zeit sparen. Wenn Zeit kein Problem ist dann hat sich dein Problem wohl erledigt.

Gruß Air
Ja funktioniert danke !! Wie würde es denn gehen mit einem Objekt ! Ich würde sowas natürlich lieber benutzen wenn es gehen würde !! Kann ich denn in einem Objekt (HashMap) Refrenzen speichern sodass ich sie immer aufrufen kann ohne sie zu überschreiben ?
Gruss, crombix.
 
Warum nimmst du nicht trotzdem eine HashMap zur Darstellung der Referenzen?

Hier mal ein Beispiel wie man eine HashMap (oder jeden anderen beliebigen Serialisierbaren Datentyp) in eine Datei speichern kann und diese wieder ausliest:
Java:
HashMap<String, String> referenzen = new HashMap<String, String>();

/*
 * Referenzen hinzufügen
 */

File file = new File("PFAD ZUR DATEI");

//Speichern
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(referenzen);
oos.close();

//Laden
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
Object obj = ois.readObject();
if(obj instanceof HashMap<String, String>) {
	referenzen = obj;
}
ois.close();

Hi Air,
ich nehme schon eine HashMap ! Also ich hab in meiner Datei zeilenweise Strings gespeichert ! Diese Strings sehen so aus (alterName>>neuerName) danach hab ich in der entsprechenden Klasse wo ich die Referenzen brauche alle Strings aus dieser Datei mit einer for-Schleife gelesen und jeweils die Strings interpretiert und zwar mit der folgenden Methode:
Java:
public HashMap<String, String> getReferencesMap() throws IOException
	{
			
String datei = "C:/FileReferences.txt";			
	
			BufferedReader reader = new BufferedReader(new FileReader(datei));
			String line;			
			 while ((line = reader.readLine()) != null) {
		          String myString = line;
                          // Interpretation der Strings

		          String[] references = myString.split(">>");
		          map.put(references[0],references[1] );		           
		
			 }
			 return map;
		
	}

Und damit erhalte ich eine HashMap mit allen Referenzen, die ich überall benutzen kann !! Deine Lösung sieht auch gut aus ! Danke vielmals für deine Unterstützung !
LG, crombix.
 

Neue Beiträge

Zurück