tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
1301
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    crombix crombix ist offline Mitglied
    Registriert seit
    Oct 2010
    Beiträge
    17
    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.
     

  2. #2
    airtime airtime ist offline Mitglied Silber
    Registriert seit
    Apr 2009
    Beiträge
    54
    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
     

  3. #3
    crombix crombix ist offline Mitglied
    Registriert seit
    Oct 2010
    Beiträge
    17
    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
     

  4. #4
    airtime airtime ist offline Mitglied Silber
    Registriert seit
    Apr 2009
    Beiträge
    54
    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
     

  5. #5
    crombix crombix ist offline Mitglied
    Registriert seit
    Oct 2010
    Beiträge
    17
    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.
     

  6. #6
    crombix crombix ist offline Mitglied
    Registriert seit
    Oct 2010
    Beiträge
    17
    Zitat Zitat von airtime Beitrag anzeigen
    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.
     

  7. #7
    airtime airtime ist offline Mitglied Silber
    Registriert seit
    Apr 2009
    Beiträge
    54
    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
     

  8. #8
    Tsunamii Tsunamii ist offline Mitglied Silber
    Registriert seit
    Jul 2009
    Beiträge
    75
    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:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    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();
    Geändert von Tsunamii (20.10.10 um 15:45 Uhr)
     

  9. #9
    crombix crombix ist offline Mitglied
    Registriert seit
    Oct 2010
    Beiträge
    17
    Zitat Zitat von airtime Beitrag anzeigen
    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.
     

  10. #10
    crombix crombix ist offline Mitglied
    Registriert seit
    Oct 2010
    Beiträge
    17
    Zitat Zitat von Tsunamii Beitrag anzeigen
    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:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    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:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
     
    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.
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 16.09.10, 08:08
  2. Datei zeilenweise lesen, Rückgabewert = null
    Von IcocaI im Forum Java Grundlagen
    Antworten: 17
    Letzter Beitrag: 15.10.09, 17:02
  3. Antworten: 3
    Letzter Beitrag: 14.10.07, 23:49
  4. Antworten: 2
    Letzter Beitrag: 27.04.07, 08:16
  5. Zeilenweise speichern + lesen in txt Datei
    Von RazOrde im Forum Java
    Antworten: 1
    Letzter Beitrag: 27.04.04, 09:56

Stichworte