2016-04-19 6 views
-1

Ich habe einen Code, der eine Datei mit gepufferten Leser liest und splitten, besagte Datei wurde über eine Methode erstellt, die automatisch 4KB leeren Raum am Anfang der Datei, dies ergibt, wenn ich Folgendes liest passiert:Wie überspringe ich einen Teil der Datei und lese eine Zeile?

zuerst wird der Code:

BufferedReader metaRead = new BufferedReader(new FileReader(metaFile)); 
String metaLine = ""; 
String [] metaData = new String [100000]; 

     while ((metaLine = metaRead.readLine()) != null){ 
      metaData = metaLine.split(","); 
      for (int i = 0; i < metaData.length; i++){ 
       System.out.println(metaData[i]); 
     } 
     } 

Dies ist das Ergebnis, halten diese Datei bereits im Kopf vorhanden und enthält die Werte:

//4096 spaces then the first actual word in the document which is --> testTable2 
Name 
java.lang.String 
true 
No Reference 

gibt es eine Möglichkeit, die ersten 4096 Räume zu überspringen, und kommen ohne Umschweife zum ac tual Wert in der Datei, damit ich das Ergebnis regelmäßig bekommen kann? Weil ich das MetaData-Array später in anderen Operationen verwenden werde, und ich bin mir ziemlich sicher, dass die Leerzeichen die Anzahl der Slots innerhalb des Arrays vermasseln werden. Irgendwelche Vorschläge würden geschätzt werden.

+4

Haben Sie in Betracht gezogen, err, 'BufferedRead er.skip() '? – EJP

+1

Und warum nicht die Dateierstellung reparieren, um die sinnlosen 4K-Räume loszuwerden? Anstatt kooperierende Fehler zu bauen? – EJP

Antwort

0

Wenn Sie Eclipse verwenden, sollte die automatische Vervollständigung helfen.

metaRead.skip(4096); 

https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html

+0

Ich habe Ihre Frage möglicherweise falsch gelesen. Sie möchten 4096 Leerzeichen überspringen und keine Bytes? –

+0

Selbe Sache, und 'Reader.skip()' überspringt Zeichen. – EJP

+0

Ich meinte, wenn er eine Menge Zeichen hätte, von denen einige Buchstaben, Zahlen usw. wären und er 4096 Leerzeichen überspringen wollte, dann würde das nicht funktionieren. Aber ich vermutete die Nummer 4096 ist ein ziemlich großer Hinweis. –

0

könnte Sie (wie bereits erwähnt) einfach tun:

metaRead.skip(4096);

Wenn das Leerzeichen belegt immer, dass viele Zeichen, oder Sie könnten nur Linien vermeiden, die leer sind

while ((metaLine = metaRead.readLine()) != null){ 
    if(metaLine.trim().length() > 0){ 
     metaData = metaLine.split(","); 
     for (int i = 0; i < metaData.length; i++){ 
      System.out.println(metaData[i]); 
     } 
    } 
}