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.