2016-07-26 36 views
1

ich eine Textdatei müssen tokenize tokenize wo Token durch "[a-zA-Z] +" Folgende Arbeiten sind definiert:Verwenden Scanner eine Datei

Pattern WORD = Pattern.compile("[a-zA-Z]+"); 

File f = new File(...); 
FileInputStream inputStream = new FileInputStream(f); 
Scanner scanner = new Scanner(inputStream); e problem is 

String word = null; 

while((word = scanner.findWithinHorizon(WORD, (int)f.length())) != null) { 
    // process the word 
} 

Das Problem ist, dass findWithinHorizonint erfordert als der Horizont, während die Dateilänge vom Typ long ist.

Was ist eine sinnvolle Möglichkeit, eine große Datei mit einem Scanner zu tokenisieren?

Antwort

3

verwenden ein Trennzeichen, das die Negation des Übereinstimmungsmusters ist:

Scanner s = new Scanner(f).useDelimiter("[^a-zA-Z]+"); 
while(s.hasNext()) { 
    String token = s.next(); 
    // do something with "token" 
}