ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
18397
18397
EMPFEHLEN
-
Hallo !
Hoffentlich kann mir jemand bei meinem Problem helfen:
Ich muss aus einer kompremierten Datei zeilenweise auslesen.
Leider kenne ich nur die Methode readLine(), aber diese Idee klappt nicht.
Andere Methoden habe ich auch schon probiert, aber diese lesen nicht zeilenweise ein....
Bitte um Hilfe.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
/** * Methode die die erste Zeile einer Dateil als Bookshop erkennt, und alle folgenden Zeilen * als Books. Es wird zuallerest die Zeilenanzahl ueberprueft, da es schon vorher zu einem * Abbruch kommen kann. * @param source Quelldatei * @return true, bei erfolgreichem Lesen */ public static BookStore readBookStore(boolean unZip, String source) { BookStore bookStore=null; int lineCounter=0; // Variable fuer Anzahl der Lines in der Datei try { // da es passieren kann, dass eine Zeile leer ist, sieht man zuerst nach, // wie viele Zeilen die Date hat - könnte schon vorher abbrechen ! lineCounter=0; Object inDataStream=null; GZIPInputStream readUnzip=null; if (unZip==true) { readUnzip = new GZIPInputStream( new FileInputStream( source+".gz" ) ); inDataStream=readUnzip; lineCounter=readNrOfItems(source+".gz"); } else { // Liest die Datei zeilenweise ein. Öffen, Befüllen eines BufferedReaders DataInputStream read = new DataInputStream( new BufferedInputStream( // aus Datei: new FileInputStream(source))); inDataStream=read; lineCounter=readNrOfItems(source); } BookStore newBookStore=null; Vector newBooks=null; Book newBook=null; for (int i = 0; i < lineCounter; i++) { String line = inDataStream.[COLOR=Red]readLine();[/COLOR] // hier ist der fehler if ( (line != null) && (line.length() > 0)) { // parsing line if (i==0) // erste Zeile in der Datei -> bekanntlich die BookStore Daten.... { String[] array = line.split(" "); // Array durch Leerzeichen erstellen lassen double id = Double.parseDouble(array[0]); // String in double umwandeln, damit man einen neuen Bookstore aufmachen kann int postalCode = Integer.parseInt(array[2]); // String in int umwandeln, damit man einen neuen Bookstore aufmachen kann newBookStore = new BookStore(id); newBookStore.setName(array[1]); newBookStore.setPostalCode(postalCode); System.out.print(newBookStore); } else // Regal des Shops mit Büchern befüllen { String[] array = line.split(" ## "); // alle Eingaben durch Leerzeichen trennen und in Array speichern for (int j=0; j<array.length; j++) { switch (j) // feld des arrays bestimmen - ab dem 3ten feld sind autoren vorzufinden { case 0: newBook=new Book(array[j]); System.out.println(newBook.getIsbn()); break; case 1: newBook.setTitle(array[j]); System.out.println(newBook.getTitle()); break; case 2: double price = Double.parseDouble(array[j]); newBook.setPrice(price); System.out.println(newBook.getPrice()); break; default: String [] newAuthors=new String[array.length-3]; // weil die ersten drei Felder keine Autoren sind for (int x=3; x<array.length; x++) { newAuthors[x-3]=array[x]; System.out.print(" "+newAuthors[x-3]); } newBook.setAuthors(newAuthors); newBookStore.addBook(newBook); // jetzt einfach das Bücherregal füllen break; } // end switch } // end for Restarray mit Autoren durcharbeiten } // end else wenn die erste zeile kontrolliert wurde } // end if } // end for inDataStream.close(); // Datei zumachen ! return newBookStore; } catch (Exception e) { // Input-Exceptions auffangen System.err.println("Dateizugriffsfehler: " + e.getLocalizedMessage()); return null; } }
mfg
shadow
-
Durch Verschachtelung der beiden Eingabeströme ZipInputStream und FileInputStream können die Bytes der einzelnen Dateien, die in die Zip-Datei gepackt worden sind, gelesen werden.
ZipInputStream zin = new ZipInputStream (new FileInputStream(args[0]));
StringBuffer br = new StringBuffer();
ZipEntry entry;
while ((entry = zin.getNextEntry()) != null){
BufferedReader in = newBufferedReader(new InputStreamReader(zin));
String line;
while ((line = in.readLine()) != null){
br.append(line);
}
}
So könnte man das in etwa machen..
Gruß
soa
-
vielen dank !
habs aber ein wenig anders gelöst
FileInputStream -> GZIPInputStream -> DataInputStream...
trotzdem danke
mfg
shadow
Ähnliche Themen
-
Mit C .txt zeilenweise einlesen
Von MrMorpheus im Forum C/C++Antworten: 28Letzter Beitrag: 27.02.12, 18:54 -
Datei zeilenweise einlesen - aber nicht die erste Zeile
Von FoolMoon im Forum Java GrundlagenAntworten: 2Letzter Beitrag: 13.02.10, 19:22 -
Datei Zeilenweise einlesen
Von dtm im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 02.08.09, 17:13 -
txt zeilenweise einlesen?
Von Fichmopp im Forum Visual Basic 6.0Antworten: 16Letzter Beitrag: 16.05.05, 20:05 -
Datei zeilenweise in Array einlesen!
Von abi22 im Forum PHPAntworten: 5Letzter Beitrag: 12.10.04, 13:21





Zitieren
Login





