Textfile bearbeiten und speichern

Status
Nicht offen für weitere Antworten.

gondor

Bekanntes Mitglied
hallo!

wie kann ich folgendes problem lösen:

ich möchte ein textfile laden, die ersten 30 zeilen löschen und dann wieder speichern.

danke für tipps!

gondor(..)
 
lad dir mit nem BufferedReader jede zeile einzeln, lass n counter mitlaufen, und wenn der counter auf 30 steht, speicherst u die nächsten zeilen ab und schreibst sie dann wieder rein.

vielleicht geht das auch was einfahcer mit RandomAccess
 
hm, leider funktioniert das ganze noch nicht 100%

ich bekomme zwar nun die werte die ich brauche, aber das speichern in dem file macht noch schwierigkeiten 🙁

Code:
RandomAccessFile raf = new RandomAccessFile(file, "rw");

   while ((line_header = raf.readLine()) != null){
      if(linecount >= 0) {
         linecount--;
      } else {
         /*hier die zeile in datei speichern*/
         /*so sieht eine zeile aus:*/
         /*88.000000 23.457031 20.263672 23.701172 21.240234 22.724609	21.240234 22.480469*/
         raf.writeBytes(line_header);
     }

ich möchte, dass das file nur mit den werten aufgebaut ist, die ich in der schleife speichern will. zur zeit bleiben die alten werte noch mit im file. außerdem soll die struktur erhalten bleiben, so dass ich folgenden aufbau im überschriebenen file habe:

88.000000 23.457031 20.263672 23.701172 21.240234 22.724609 21.240234 22.480469
92.000000 23.457031 20.019531 23.945312 21.240234 22.724609 21.240234 22.724609
96.000000 23.212891 20.019531 23.945312 21.240234 22.724609 20.996094 22.480469
[..]

wie mach ich das blos...?

gondor(..)
 
so... habe das problem gelöst.

wenn es hier noch optimierungsmöglichkeiten gibt oder irgendwelche anregungen, please report 😉

der code:


Code:
    /*File auswählen*/
    file = jFileChooser.getSelectedFile();

    String line = null;
    String line_measurement = null;
    int linecount = 30;

    try {
      RandomAccessFile raf = new RandomAccessFile(file, "r");
      
      while((line = raf.readLine()) != null) {
        if(linecount >= 0) {
          linecount--;
        } else {
          if(line_measurement != ""){
            line_measurement = line_measurement + "\n" + line;
          } else {
            line_measurement = line;
          }
        }
      }

      FileOutputStream fos = null;

      try {
        fos = new FileOutputStream(file);
        fos.write(line_measurement.getBytes());
      } catch(IOException se) {
      } finally {
        try {
          fos.close();
        } catch(IOException e2) {
        }
     }
    } catch(IOException ioe) { /*do nothing*/
    }

gondor(..)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben