Lea la siguiente palabra en java

Tengo un archivo de texto que tiene el siguiente contenido:

ac und accipio annehmen ad zu adeo hinzugehen ... 

Leo el archivo de texto y repito a través de las líneas:

 Scanner sc = new Scanner(new File("translate.txt")); while(sc.hasNext()){ String line = sc.nextLine(); } 

Cada línea tiene dos palabras. ¿Hay algún método en Java para obtener la siguiente palabra o tengo que dividir la línea para obtener las palabras?

No es necesario dividir la línea porque el delimitador predeterminado de java.util.Scanner es el espacio en blanco.

Puede simplemente crear un nuevo objeto Scanner dentro de su statement while.

  Scanner sc2 = null; try { sc2 = new Scanner(new File("translate.txt")); } catch (FileNotFoundException e) { e.printStackTrace(); } while (sc2.hasNextLine()) { Scanner s2 = new Scanner(sc2.nextLine()); while (s2.hasNext()) { String s = s2.next(); System.out.println(s); } } 

Ya obtienes la siguiente línea en esta línea de tu código:

  String line = sc.nextLine(); 

Para obtener las palabras de una línea, recomendaría usar:

 String[] words = line.split(" "); 

Con Scanner s, acabarás generando muchos objetos para cada línea. Generará una cantidad decente de basura para el GC con archivos grandes. Además, es casi tres veces más lento que usando split ().

Por otro lado, si divide por espacio ( line.split(" ") ), el código fallará si intenta leer un archivo con un delimitador de espacio en blanco diferente. Si split() espera que escribas una expresión regular, y coincide de todos modos, usa split("\\s") lugar, que coincide con un “bit” más de espacio en blanco que solo un carácter de espacio.

PD: Lo siento, no tengo derecho a comentar las respuestas ya dadas.

es mejor leer una línea y luego hacer una división.

 File file = new File("path/to/file"); String words[]; // I miss C String line; HashMap hm = new HashMap<>(); try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"))) { while((line = br.readLine() != null)){ words = line.split("\\s"); if (hm.containsKey(words[0])){ System.out.println("Found duplicate ... handle logic"); } hm.put(words[0],words[1]); //if index==0 is ur key } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 

Puede usar Scanner para leer palabra por palabra, Scanner.next () lee la siguiente palabra

 try { Scanner s = new Scanner(new File(filename)); while (s.hasNext()) { System.out.println("word:" + s.next()); } } catch (IOException e) { System.out.println("Error accessing input file!"); }