Eli ongelma on se, että seuraavassa koodissa ei mennä silmukkaan kun yritetään lukea kotus_sanat.txt tiedostoa. Muilla teksti-tiedostoila tuo toimii kuin unelma.
package tiedoston.luku; import java.util.*; import java.io.*; public class TiedostonLuku { public static void main(String[] args) throws Exception { Scanner tiedosto = new Scanner(new File("kotus_sanat.txt"));//muilla tiedostoilla toimii. while (tiedosto.hasNextLine()) { //Whileen ei mennä jostain syystä? String rivi = tiedosto.nextLine(); System.out.println(rivi); System.out.println("kukkuu!"); } } }
Olisiko ko. tiedossa sellainen rivinvaihto jota tuo Scanner -luokka ei ymmärrä rivinvaihdoksi?
Tosin silti luulisi tulevan yksi rivi tuollakin ...
Auttaisiko kertoa tiedoston merkistökoodaus?
Scanner tiedosto = new Scanner(new File("kotus_sanat.txt"), "latin1");
Testasin itsekin lukea Scannerilla tuota kotuksen sanalistaa ja se kyllä luki jokaisen rivin ihan nätisti, ilman merkistön antamistakin. Itse jäin ihmettelemään, että miksi sinulla on nuo sanat txt-tiedostossa, kun se tiedoston on alun perin xml-muotoinen. Voisit koodata jonkun hyvin simppelin sax-parserin sanojen käsittelyyn.
Oma koodini näytti tältä:
import java.util.Scanner; import java.io.File; public class KotusTesti { public static void main( String[] args ) { try { try (Scanner scanner = new Scanner( new File( "kotus.xml" ) )) { while ( scanner.hasNextLine() ) { System.out.println( scanner.nextLine() ); } } } catch ( Exception e ) { System.out.println( e.getMessage() ); } } }
Antin ehdotuksella alkoi toimimaan kiitos!
Tiedosto on teksti koska latasin sen sellaisena. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.