Avatar billede jesperdh Nybegynder
25. december 2004 - 13:22 Der er 21 kommentarer og
1 løsning

Læse ord i tekstfil

Jeg har en lang .txt fil hvor jeg så har brug for at læse et ord ad gangen. Jeg kan finde "readLine" i min BufferedReader, men den giver en hel linje og det kan jeg ikke bruge med mindre jeg kan splitte ordene ud. Der findes desuden "read()" men den læser et tegn ad gangen.

Jeg ved der må findes en let måde, men jeg kan ikke finde den. Please hjælp!
Avatar billede mikkelbm Nybegynder
25. december 2004 - 13:29 #1
Ta' et kig på StringTokenizer:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html

Den kan det du efterspørger.
Avatar billede jesperdh Nybegynder
25. december 2004 - 13:35 #2
Så jeg hiver linjen ind med readLine og får tokens ud med StringTokenizer()?

Eller kan man bruges StringTokenizer() på hele filen, dvs. over mange linjer?
Avatar billede mikkelbm Nybegynder
25. december 2004 - 13:41 #3
Jeg mener ikke den kan bruges over flere linjer. Jeg har desværre ikke lige mulighed for at teste, men jeg vil gøre som du selv foreslår med readLine() .
Avatar billede jesperdh Nybegynder
25. december 2004 - 13:43 #4
Tak skipper!
Avatar billede kalp Novice
25. december 2004 - 14:37 #5
Jeg mener vist godt den kan bruges over flere linjer hvis man sætter delim til \n eller hvad det var... eller har jeg misforstået spørgsmålet?
Avatar billede mikkelbm Nybegynder
25. december 2004 - 14:40 #6
Ja, du kan selv bestemme hvilke tegn den skal splitte ved, men den kan ikke bruges til at læse en fil med.
Avatar billede kalp Novice
25. december 2004 - 14:43 #7
Nej ikke direkte.... men han kan fx gemme en text fil i en String og så bruge StringTokenizer på sin String... det er vel det samme:)
Avatar billede mikkelbm Nybegynder
25. december 2004 - 14:44 #8
13:25:42 >> "Så jeg hiver linjen ind med readLine og får tokens ud med StringTokenizer()?"

:)
Avatar billede mikkelbm Nybegynder
25. december 2004 - 14:50 #9
13:25:42 == 13:35:42
Avatar billede kalp Novice
25. december 2004 - 14:53 #10
hehe... men det i hvertfald rigtigt nok med StringTokenizer og han behøver vist ikke sætte nogen delims hvis det bare er hvert ord han ønsker... så kan han bruge nextToken()
Avatar billede jesperdh Nybegynder
25. december 2004 - 14:54 #11
Jeg har i hvert fald fået det til at virke med readLine og StringTokenizer, men ved naturligvis ikke om det er det optimale.

Resultatet skal være at jeg får et token ud ad gangen fra en samlet tekstfil, og gerne som effektivt som muligt. Så har I et godt forslag så kom endelig med det!
Avatar billede kalp Novice
25. december 2004 - 14:55 #12
Du skal lave en while løkke.. du kan lave

String tmp;
while(dintfil.hasMoreTokens())
{
tmp = dinfil.nextToken();
}
Avatar billede mikkelbm Nybegynder
25. december 2004 - 14:58 #13
Det står ganske fint beskrevet i dokumentationen. Og som jeg lige har læst mig til rundt omkring er det måden at gøre det på.
Avatar billede jesperdh Nybegynder
25. december 2004 - 15:01 #14
yes, den virker også. Hvor "dinfil" så bare er min FileReader. Så jeg slipper for BufferedReader, cool nok! Takker!
Avatar billede kalp Novice
25. december 2004 - 15:05 #15
Det helt korrekt:)
Avatar billede jesperdh Nybegynder
25. december 2004 - 15:06 #16
Så det nok derfor det virker.... høhøhø :-P
Avatar billede jesperdh Nybegynder
25. december 2004 - 15:36 #17
Det kunne så gøres endnu bedre. Har lige listet det til fremtidige med samme problem:

JFileChooser FC = new JFileChooser(path);
                       
int returnVal = FC.showOpenDialog(parent);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
        selectedFile =  FC.getSelectedFile();
    try
    {
                                       
    while(selectedFile.hasMoreTokens())//Så længe filen har flere tokens
        tages de ud et ad gangen.
    {
        currentToken = selectedFile.nextToken();
        System.out.println(currentToken);
    }
}

Starter med en dialogbox. Her printer jeg bare tokens ud for at checke det virker. Jeg gad heller ikke tage catch delen med, men det burde også være ret ligetil.
Avatar billede jesperdh Nybegynder
25. december 2004 - 15:39 #18
Nææ, der fik jeg da lige fucket det...
Avatar billede mikkelbm Nybegynder
25. december 2004 - 15:43 #19
Hmmm... Jeg har nu aldrig set en hasMoreTokens på en File ?
Avatar billede jesperdh Nybegynder
25. december 2004 - 15:44 #20
Nej, fik lige rodet helt rundt i det. ARGH, virkede lige før. Men så blev jeg sq lidt for kreativ.... Heh!
Avatar billede mikkelbm Nybegynder
25. december 2004 - 15:45 #21
:)
Avatar billede kalp Novice
25. december 2004 - 15:46 #22
hehe
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester