2017-06-29 4 views
0

Ich habe diesen Code zum Lesen von Daten und funktioniert gut, aber ich mag den Startpunkt ändern, dass die Daten aus gelesen wird - My DataFile.txt ist „abcdefghi“ und der Ausgang istRead Data File-Adresse (Java)

1)97     
2)98                  
3)99                    
4)100 

möchte ich im zweiten Byte starten, so würde der Ausgang

sein
1)98    
2)99   
3)100 
4)etc 

Code:

import java.io.*; 
public class ReadFileDemo3 { 
    public static void main(String[] args)throws IOException {  
     MASTER MASTER = new MASTER(); 
     MASTER.PART1(); 
    } 
} 

class MASTER { 
    void PART1() throws IOException{ 
     System.out.println("OK START THIS PROGRAM"); 
     File file = new File("D://DataFile.txt"); 
     BufferedInputStream HH = null; 
     int B = 0; 
     HH = new BufferedInputStream(new FileInputStream(file)); 
     for (int i=0; i<4; i++) { 
      B = B + 1; 
      System.out.println(B+")"+HH.read()); 
     } 
    }  
} 
+2

https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html# Überspringen (lang) –

+0

Sie können auch RandomAcessFile verwenden, siehe dieses Beispiel für weitere Details - https://stackoverflow.com/questions/9671126/how-to-read-a-file-from-a-certain-offset –

+0

ill auch Schauen Sie sich die –

Antwort

1

Sie können die ersten n Bytes einfach wie folgt ignorieren.

HH = new BufferedInputStream(new FileInputStream(file)); 
int B = 0; 
int n = 1; // number of bytes to ignore 

while(HH.available()>0) { 
    // read the byte and convert the integer to character 
    char c = (char)HH.read(); 
    if(B<n){ 
     continue; 
    } 
    B++; 
    System.out.println(B + ")" + (int)c); 
} 

bearbeiten: Wenn Sie eine zufällige Position in Datei zugreifen wollen, dann müssen Sie RandomAccessFile verwenden. Ausführliche Beispiele finden Sie unter this.

Verwandte SO Beitrag:

+0

Danke für Ihre Antwort aber etwas an ist nicht richtig n scheint nicht verwendet zu werden :) –

+0

was ist das, was nicht funktioniert? Ich nahm an, dass dein Code korrekt ist und änderte es so, wie du es erwähnt hast - du willst nur das erste Byte überspringen. Beachten Sie, dass ich den Code nicht ausgeführt habe, um zu überprüfen, ob er funktioniert! –

+0

Nochmals vielen Dank für Ihre Antwort Ich möchte eine genaue Adresse/Offset? –