# Fileinhalt sortieren



## celloman (1. Oktober 2007)

Hall Leute habe ein kleines Problrm,

Würde gerne wissen wie ich den Dateiinhalt sortieren kann.

In der Datei sind Blöcke enthalten


z.B


Part (53)

1   2   3   4
3   3   4   5

Part (12)

1   2   3   4
3   3   4   5

Part (33)

1   2   3   4
3   3   4   5


Ich öffne die Datei schreibe es in ein string und nun möchte ich es nach Parts sortiert haben. zu erst Part12 dann Part 33 und anschließend Part 53 danach möchte ich den sortierten Text in eine andere Datei speichern.


Kann mir da jemand ein kleiner Tipp geben. weis nicht mehr weiter 



```
import java.io.*;
import java.text.*;
import java.util.*;

/**
 * 
 * @author mcelik
 */
public class lerne
{
  /**
   * 
   * @param args 
   */
  public static void main( String[] args )
  {

    Vector vec = new Vector();
    String s;

    // Lies Textzeilen aus der Datei in einen Vector:
    try {
      BufferedReader in = new BufferedReader(
                          new InputStreamReader(
                          new FileInputStream( "c:/test1.txt" ) ) );
      while( null != (s = in.readLine()) ) {
        vec.add( s );
      }
      in.close();
    } catch ( IOException e ) {
      System.out.println( "Fehler beim Lesen der Datei!" );
    }





    // Schreibe alle Elemente als Textzeilen in die Datei:
    try {
      BufferedWriter out = new BufferedWriter(
                           new OutputStreamWriter(
                           new FileOutputStream( "c://test_neu.txt" ) ) );
      for( int i=0; i<vec.size(); i++ ) {
        s = vec.get( i ).toString();
        System.out.println( s );
        out.write( s, 0, s.length() );
        out.newLine();
      }
      out.close();
    } catch ( IOException e ) {
      System.out.println( "Fehler beim schreiben der Datei!" );
    }
  }
}
```


----------



## zerix (1. Oktober 2007)

Hallo,

das ist nicht böse gemeint, aber das mit dem "weiß nicht mehr weiter" find ich etwas übertrieben, da bis jetzt nicht mal ein Ansatz von einer Sortierung zu sehen ist. Das sieht aus als hättest du es nicht mal versucht.

Ein tipp wäre mal, dass du beim einlesen schaust, was überhaupt in der Zeile steht, die du einliest. Jedes mal wenn dann Part drin steht könntest du es in einen anderen Vector.

Beispiel:
Du liest ein. Dann steht Part(...) in dem String. Diesen String und alles was danach kommt schreibst du in einen Vector. Wenn du dann wieder Part(...) einliest, schreibst du das und alles was danach kommt in einen anderen Vector. Das dann so lange weiter, bis die Datei zu ende ist. Dann hast du alles in "Blöcken" und kannst machen was du willst. 

MFG

zEriX


----------



## celloman (1. Oktober 2007)

Hallo

Muss ich da jedesmal ein vektor deklarieren

MFG


----------



## zerix (1. Oktober 2007)

Du könntest es so machen


```
//Klassenvariable
private List<List> liste = new ArrayList<List>();


//in der Methode
List stringlist = new ArrayList<String>();
while( null != (s = in.readLine()) ) {
if(/*deine Bedingung*/){
liste.add(stringlist);
stringlist = new ArrayList<String>();
}
        stringlist.add( s );
}
```

MFG

zEriX


----------



## zeja (1. Oktober 2007)

Ich würde eine Klasse PartData erstellen die Comparable erweitert und die den Namen eines Parts und dessen Inhalt bekommen kann.

Beim Auslesen der Datei erstellt man entsprechend Objekte der Klasse PartData und packt diese in eine Liste. Am Ende kann man die Liste über Collections.sort(...) sortieren und dann die Daten wieder auslesen und in eine Datei schreiben.


----------



## celloman (1. Oktober 2007)

Hy,

muss ich meinen code jetzt umändern oder einfach ersetzen

MFG


----------



## celloman (1. Oktober 2007)

Hy zeja 

hast du da ein kleines Beispiel wie du das machen würdest

MFG


----------



## celloman (1. Oktober 2007)

Hy 

ich dachte ich kann die Datei einfach in dem String sortieren und danach in eine andere Datei wiedergeben.


MFG


----------



## zerix (1. Oktober 2007)

Sicher kannst du das. So wie zeja das erklärt hat, ist es die bessere Lösung. So würde ich es eigentlich auch machen, aber ich dachte, ich bleib näher an deinem Beispiel.

MFG

zEriX


----------



## celloman (1. Oktober 2007)

Hallo

wie genau muss ich da vorgehen, die Datei mit readerladen ?

MFG


----------



## zerix (1. Oktober 2007)

Kannst du deine Frage vielleicht etwas genauer stellen?

MFG

zEriX


----------



## celloman (4. Oktober 2007)

Hall Kollegen

Zeja kannst du mir das ein bischen konkreter erklären wie ich es machen muss, damit es klapt.


-ich öffne die datei, den inhalt schreibe ich in einen stream weiter ?


Kann mir da ein andererer vielleicht helfen.

MFG


----------

