Avatar billede backupmand Nybegynder
14. december 2000 - 00:40 Der er 10 kommentarer og
1 løsning

problem med skriv til fil

Hej. Nu vil jeg ikke poste hele koden, da den er forh. lang.
Grundproblemet er, at jeg vil læse to linjer fra en fil
og dernæst printe dem med et ord på hver linje i en ny
fil (skrive dette fil filen). Min source fil består
af to linjer, således:
Dette er min fil.
Den har meget lidt indhold, men
jeg kan kun få metoden til at skrive flg:

Dette
er
min
fil.

så er den ikke længere selvom, teksten er længere end dette
(linjen \"den har meget lidt indhold\" kommer ikke med. HVorfor ?

Jeg bruger en StringTokenizer til at sætte lig hvert ord.
Koden for min metode med PrintWriter instansen ser sådan ud -
og jeg kan altså ikke få den til at skrive begge linjer fra min
source fil med et ord på hver sin linje.

public void omdan (String filnavn) throws IOException
      {
      inFile = new BufferedReader(new FileReader(filnavn));
      String line = inFile.readLine();
      outFile = new PrintWriter(new FileWriter(\"andenfil.txt\"));
      st = new StringTokenizer(line);
      while (st.hasMoreElements())
          {
       
        line = st.nextToken();         
          outFile.println (line);
          line = inFile.readLine();
         
          }
      inFile.close();  // bare glem denne linje
      outFile.close();

Tak på forhånd for hjælpen, eksperter.

Avatar billede pstric Nybegynder
14. december 2000 - 01:17 #1
Så vidt jeg lige kan se, så skal du bare læse næste linie på det rigtige sted. Prøv med:
    inLine = inFile.readLine();
    while (inLine != \"\") {
        st = new StringTokenizer(inLine);
        while (st.hasMoreElements()) {
            outLine = st.nextToken();
            outFile.println(outLine);
        }
        inLine = inFile.readLine();
    }
så skulle du vist få alle linier med.
Avatar billede disky Nybegynder
14. december 2000 - 09:07 #2
Jeg vil nok bruge:

while( (inLine=inFile.readLine())!=null)
{

}

og så fjerne den \'nederste\' readLine() i pstric\'s exempel.

Den metode virker, bruger den nemlig selv :-)
Avatar billede backupmand Nybegynder
14. december 2000 - 10:11 #3
Pstric, outLine = st.nextToken();
           
er outLine en String outLine ?
er det en, som det er meningen du har erklæret
før du gå ind i løkken ? lidt forvirret her.
Avatar billede backupmand Nybegynder
14. december 2000 - 10:19 #4
Nu ser min metode sådan ud, men den skriver
stadig kun første linje ud.... 

public void omdan (String filnavn) throws IOException
      {
      inFile = new BufferedReader(new FileReader(filnavn));
      String line, outline; //= inFile.readLine();
      outFile = new PrintWriter(new FileWriter(\"andenfil.txt\")); // laver en fil ved navn andenfil.txt
             
      while ((line=inFile.readLine())!=null)
          {
        st = new StringTokenizer(line);
            while (st.hasMoreElements())
            {
            outline = st.nextToken();         
            outFile.println (outline); // skriver linjerne ud til filen \"andenfil.txt\"
           
            }
            line = inFile.readLine();
      }
     
      inFile.close();
      outFile.close();
       
      }     
         
}
Avatar billede disky Nybegynder
14. december 2000 - 10:24 #5

Fjern den nederste line=inFile.readLine();
Avatar billede backupmand Nybegynder
14. december 2000 - 10:29 #6
nu skriver den anden del af linjen ud, og
mangler den første linje
Avatar billede disky Nybegynder
14. december 2000 - 10:31 #7
kan du lige poste hele funktionen igen.
Så vi er sikre på hvad du kører :-)
Avatar billede backupmand Nybegynder
14. december 2000 - 10:37 #8
´nej nu virker det fand\'me

Avatar billede backupmand Nybegynder
14. december 2000 - 10:38 #9
her er den igen, for en sikkerheds skyld..
Jeg fjernede outline, den kunne jeg ikke se
skulle bruges til noget + den øverste
readline .

public void omdan (String filnavn) throws IOException
      {
      inFile = new BufferedReader(new FileReader(filnavn));
      String line = \"\"; //inFile.readLine();
      outFile = new PrintWriter(new FileWriter(\"andenfil.txt\")); // laver en fil ved navn andenfil.txt
                   
      while ((line=inFile.readLine())!=null)
          {
          st = new StringTokenizer(line);
          while (st.hasMoreTokens())
          {
            line = st.nextToken();         
            outFile.println (line); // skriver linjerne ud til filen \"andenfil.txt\"
          }
                 
        }
        inFile.close();
        outFile.close();
      }     
}
Avatar billede disky Nybegynder
14. december 2000 - 10:43 #10
det er rart at høre det virker :)
Avatar billede backupmand Nybegynder
14. december 2000 - 10:47 #11
jeg håber jeg fik accepteret svaret, så du fik
nogle point
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

IT-JOB