2016-04-05 13 views
0

ich eine Methode entwickelt, die alle Daten aus .data Datei extrahieren und sie in eine Textdatei schreibenWie bestimmte Kriterien in eine Textdatei aus einer Binärdatei schreiben

myTextFile = new PrintWriter(
        new BufferedOutputStream(new FileOutputStream("file.txt"))); 
      input = new DataInputStream(new FileInputStream(new File("file.data"))); 



    //This loop will take all info found in file.data but what if I want only where country is USA for exemple 
      while (input.available() > 0) { 

       countryNumber = input.readInt(); 
       population = input.readInt(); 
       region = input.readUTF(); 
       State = input.readUTF(); 
       loan = input.readInt(); 
       categorie = (input.readChar()); 
       adresse = (input.readUTF()); 
       descrpt = input.readUTF(); 
      //Now I print all info from file.data to file.txt 
     myTextFile.println(region.toString() + " " + population.toString() + " " + region + " " + State + " " + categorie + " " + loan + " " + adresse); 

      } 
myTextFile.close(); 
      input.close(); 

Wie Sie sehen können, habe ich Machen Sie eine Schleife While(imput.available()>0, die alle Daten in der Datei.data nehmen und alles in Textdatei schreiben wird

Aber was, wenn ich in der Textdatei nur wo Region = NewYork schreiben möchte? und schreiben Sie die Bevölkerung, Staat etc .... von New York in der Textdatei?

ist ihre Art und Weise kann ich Kriterien einschränken?

Viel Anerkennung,

Bass

Antwort

1

Der beste Weg, so etwas zu tun ist, eine festgelegte Menge an Bytes, die von Datensatz zu jedem Datensatz zuordnen meine ich das Tupel countryNumber, Bevölkerung, Region, Staat, Darlehen, Kategorie, Adresse und Beschreibung. Dann setzen Sie den Wert Ihrer Region als ersten Wert Ihres Datensatzes auf diese Weise können Sie die Region lesen, prüfen, ob es die erwartete Region ist, und wenn dies der Fall ist, können Sie mit dem Lesen der Datei aufhören, sonst gehen Sie direkt zum nächsten Datensatz und so weiter.

Dieser Ansatz ermöglicht es Ihnen, nur Unterabschnitte der Datei zu lesen, anstatt alles zu lesen, was optimaler ist.

+0

Es ist eigentlich einer der besten optimalen Ansatz, ich Dank für Ihre Hilfe versuchen! – napi15

1

Bevor Sie schreiben, können Sie einfach eine if-Anweisung hinzufügen, die überprüft, ob region.equals ("NewYork"). Das wäre:

if(region.equals("NewYork")) myTextFile.println(region.toString() + " " + population.toString() + " " + region + " " + State + " " + categorie + " " + loan + " " + adresse); 
+0

Das könnte wirklich wirklich funktionieren, werde es ausprobieren, danke !! – napi15

+0

Es hat funktioniert :) danke! – napi15