Avatar billede scoty Nybegynder
10. april 2002 - 09:15 Der er 16 kommentarer og
1 løsning

append til en allerede eksisterende fil

Her er min kode men der over skrive filen hver gang...!

import java.io.OutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.DataInputStream;


public class LogWriter
{
    public LogWriter()
    {
        File file = new File("Chat.log");
        if (!file.exists() || !file.canRead())
        {
            try
            {
                fileWriter = new FileOutputStream("Chat.log", true);

            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
            printOut = new DataOutputStream(fileWriter);
          }
        else
        {
            try
            {
                fileWriter = new FileOutputStream(file);

            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
            printOut = new DataOutputStream(fileWriter);
           
        }
    }//Constructor
   
    public void writeToFile(String text)
    {
        try
        {
            printOut.writeUTF(text);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }//WriteToFile

    public void closeWriter()
    {
        try
        {
            fileWriter.close();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }//closeWriter
   
    private OutputStream fileWriter;
    private DataOutputStream printOut;
    private InputStream infile;
    private DataInputStream dataIn;

}


Hvad går der galt

//Cultzisme
Avatar billede carstenknudsen Nybegynder
10. april 2002 - 09:27 #1
Det er din if der er gal den skal hedde
if (file.exists() && file.canRead())
Avatar billede scoty Nybegynder
10. april 2002 - 09:30 #2
Har prøvet, virker ikke!
Avatar billede disky Nybegynder
10. april 2002 - 11:27 #3
Prøv med:
import java.io.OutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.DataInputStream;


public class LogWriter
{
    public LogWriter()
    {
        File file = new File("Chat.log");
            try
            {
                fileWriter = new FileOutputStream("Chat.log", true);

            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
            printOut = new DataOutputStream(fileWriter);
          }
    }//Constructor
   
    public void writeToFile(String text)
    {
        try
        {
            printOut.writeUTF(text);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }//WriteToFile

    public void closeWriter()
    {
        try
        {
            fileWriter.close();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }//closeWriter
   
    private OutputStream fileWriter;
    private DataOutputStream printOut;
    private InputStream infile;
    private DataInputStream dataIn;

}
Avatar billede carstenknudsen Nybegynder
10. april 2002 - 12:52 #4
scoty: er du sikker for jeg har
kunnet køre det med den ændring.
Avatar billede carstenknudsen Nybegynder
10. april 2002 - 12:53 #5
PS genbrug dit File objekt (file).
Avatar billede scoty Nybegynder
11. april 2002 - 08:57 #6
Det virker desværre ikke, den eneste måde det virker på, er hvis man ikke
lukker filen, altså kalder: fileWriter.close();

Findes der andre måder evt... ! Jeg er ikke helt glad for denne måde.

//Cultzisme
Avatar billede carstenknudsen Nybegynder
11. april 2002 - 09:48 #7
scoty: det er et alvorligt problem for
det compilerer og kører hos mig. Bruger
du evt Windows? Her er den kode jeg kører
hos mig:
import java.io.OutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.DataInputStream;


public class LogWriter
{
    public LogWriter()
    {
    File file = new File("Chat.log");
    System.out.println(file.exists());
    System.out.println(file.canRead());
    if (file.exists() && file.canRead())
        {
        try
            {
            System.out.println("will append");
            fileWriter = new FileOutputStream(file, true);
           
            }
        catch(IOException e)
            {
            e.printStackTrace();
            }
        printOut = new DataOutputStream(fileWriter);
        }
    else
        {
        try
            {
            fileWriter = new FileOutputStream(file);
           
            }
        catch(IOException e)
            {
            e.printStackTrace();
            }
        printOut = new DataOutputStream(fileWriter);
       
        }
    }//Constructor
   
    public void writeToFile(String text)
    {
    try
        {
        printOut.writeUTF(text);
        }
    catch(IOException e)
        {
        e.printStackTrace();
        }
    }//WriteToFile
   
    public void closeWriter()
    {
    try
        {
        fileWriter.close();
        }
    catch(IOException e)
        {
        e.printStackTrace();
        }
    }//closeWriter
   
    private OutputStream fileWriter;
    private DataOutputStream printOut;
    private InputStream infile;
    private DataInputStream dataIn;
   
    public static void main( String[] args ) {
    LogWriter log = new LogWriter();
    log.writeToFile( "My text" );
    log.closeWriter();
    }
}
Avatar billede scoty Nybegynder
11. april 2002 - 11:53 #8
CarstenKnudsen:
Ja jeg køre på en windows 2000 maskine,
men det burde da ikke have nogen betydning, el. ?

//Cultzisme
Avatar billede carstenknudsen Nybegynder
11. april 2002 - 12:04 #9
scoty: nej, men programmet burde jo fungere
både hos dig om mig på præcis samme måde,
og det gør det tilsyneladende ikke.
Avatar billede scoty Nybegynder
11. april 2002 - 12:06 #10
Jeg får en compiler fejl, når jeg compiler de kode carstenknudsen:

LogWriter.java:27: cannot resolve symbol
symbol  : constructor FileOutputStream  (java.io.File,boolean)
location: class java.io.FileOutputStream
            fileWriter = new FileOutputStream(file, true);
                        ^
1 error

//Scoty
Avatar billede scoty Nybegynder
11. april 2002 - 12:10 #11
I Java egen dokumentation står der:

FileOutputStream(String name, boolean append)
          Creates an output file stream to write to the file with the specified name.

Men du bruger FileOutputStream(file, true) hvilket ikke er en gyldig constructor.
Iflg jdk 1.3.1_02 version
Avatar billede scoty Nybegynder
11. april 2002 - 12:13 #12
Jeg har rettet det til:

fileWriter = new FileOutputStream("Chat.log", true);

//Scoty
Avatar billede carstenknudsen Nybegynder
11. april 2002 - 12:45 #13
scoty: jeg har kørt med begge muligheder;
den konstruktor jeg bruger eksisterer
først fra 1.4. Kører koden så
korrekt hos dig?
Avatar billede scoty Nybegynder
11. april 2002 - 13:05 #14
Yeps, det ser sådan ud. ! :-)
Jeg accepter dit svar,
men vender tilbage hvis ikke
dur ind i selve den sammenhæng det skal bruges i.
Jeg har nemlig kun programmet hjemm.
Avatar billede carstenknudsen Nybegynder
11. april 2002 - 13:06 #15
Så "snakkes" vi ved i morgen.
Avatar billede scoty Nybegynder
12. april 2002 - 09:48 #16
carstenknudsen... 
Der virker til systemet umiddelbart,
så det er bare ok... Forstår ikke hvorfor
at jeg havde problemt tidligere.
Men tak for hjælpen.

//scoty
Avatar billede carstenknudsen Nybegynder
12. april 2002 - 09:52 #17
Godt!
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