Avatar billede cypherdenmark Nybegynder
13. november 2003 - 16:00 Der er 12 kommentarer og
1 løsning

Læs ind fra tekstfil

Hej alle

Hvordan læser man fra en tekstfil i java. Min tekst fil er opbyggetsåledes:

Hans Hansen
Jørgen
Bendte Johansen
Mikkel Ny God
osv...

(Dvs at alle elementer i filen er med nemline og kan indeholde mellemrum)

Alle elementerne skulle gerne lægges ind i et String array...

Håber der nogle der kan hjælpe...
Avatar billede arne_v Ekspert
13. november 2003 - 16:16 #1
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("data.fil")));
String line;
while ( (line = reader.readLine()) != null) {
    // process line
}
Avatar billede arne_v Ekspert
13. november 2003 - 16:17 #2
Hvis du ved hvor mange linier der er kan du bruge et array.

Ellers er en ArrayList nok smart.
Avatar billede arne_v Ekspert
13. november 2003 - 16:18 #3
ArrayList alllines = new ArrayList();
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("data.fil")));
String line;
while ( (line = reader.readLine()) != null) {
    alllines.add(line);
}
Avatar billede arne_v Ekspert
13. november 2003 - 16:19 #4
String alllines = new String[1000];
int nolines = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("data.fil")));
String line;
while ( (line = reader.readLine()) != null) {
    alllines[nolines] = line;
    nolines++;
}
Avatar billede cypherdenmark Nybegynder
13. november 2003 - 16:44 #5
Hej Arne V

Tak for din hurtige svar.

Jeg ved ikke hvor stor min tekstfil er, så arrayList er værd at foretrække.
Hvordan kan man læse alllines igennem, altså i forbindelse men System.out.println. (bare for at teste indlæsningen)

Håber du forstår
Avatar billede arne_v Ekspert
13. november 2003 - 16:45 #6
for(int i = 0; i < alllines.size(); i++) {
  System.out.println((String)allines.get(i));
}
Avatar billede cypherdenmark Nybegynder
13. november 2003 - 16:52 #7
Ja det tænkte jeg nok. Har også prøvet ovenståenden men den vil ikke udskrive noget. Filen data.txt ligger i samme katalog hvor java fil ligger. Nogen ide til hvorfor den ikke udskriver.....
Avatar billede arne_v Ekspert
13. november 2003 - 16:59 #8
Udskriver du exceptions hvis du får sådan nogen ?

Det betyder iøvrigt ikke noget om data filen ligger i samme directory som
java filen. Men hvis ikke der er sti på filnavnet skal den ligge i det
directory hvor du kører proogrammet.

(og hvis du bruger en IDE så er det ikke nødvendigvis der hvor java filen ligger)
Avatar billede cypherdenmark Nybegynder
13. november 2003 - 17:01 #9
sådan ser min kode ud lige pt:

public static void main(String[] arg) {
       
        ArrayList alllines = new ArrayList();
        String line;
        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("data.txt")));
           
            while ( (line = reader.readLine()) != null) {
                alllines.add(line);
            }
           
        }catch (FileNotFoundException fnt){
            //File not found
        }
        catch (IOException ioe){
            //Ioexception
        }
       
        for(int i = 0; i < alllines.size(); i++) {
            System.out.println((String)alllines.get(i));
        }
    }//end main

Fanger execp. men der er ingen. Har debugget mig igennem og ser at den springer while loop over ??
Avatar billede arne_v Ekspert
13. november 2003 - 17:05 #10
Du skriver da ikke noget ud ved exception !?

ex.printStackTrace();

er en god ting.

Jeg formoder at der er noget i filen.

Men er den skrevet af samme applikation ? I så fald skal den jo lukkes
førend den kan åbnes og læses !
Avatar billede cypherdenmark Nybegynder
13. november 2003 - 17:24 #11
arhhh nu ved jeg det.... havde vist lige glemt printstacktrace :-(

Den kunne nemlig ikke finde filen data.txt selvom den lå i samme mappe. Er der nogle måder man kan få current path på. Altså noget i stil med:

new FileInputStream(CURRENTPATH + "data.txt")
Avatar billede arne_v Ekspert
13. november 2003 - 17:57 #12
System.getProperty("user.dir")

returnerer currect directory.

Men det burde ikke være nødvendigt. Jeg tror snarere at det er fordi
din IDE står i et directory mens .java og .class ligger  et andet directory.
Avatar billede cypherdenmark Nybegynder
13. november 2003 - 17:59 #13
Ok super.

Tusind tak for din store hjælp.

Stiller lige et spg. mere (opretter et nyt spg.) om hvordan man sorterer arraylist i alfabetisk orden, kunne være du kunne gi et bud igen :-)

Mvh Cypherdenmark
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