2010-06-22 6 views
4

J'ai eu des problèmes avec un fichier Java. Il est conçu pour écrire ligne après ligne dans un fichier de test sous forme de journal. Malheureusement, il écrase la même ligne chaque fois que je l'appelle.Java FileOutputStream Chaîne d'écriture

Si quelqu'un peut aider, je serais éternellement reconnaissant car cela m'a conduit le long du mur!

Code ci-dessous.

public abstract class Log { 

    protected static String DefaultLogFileLocation = "c:\\LOG.txt"; 

    public static void ToFile(String pInputString) { 
     FileOutputStream pOUTPUT; 
     PrintStream pPRINT; 
     try 
     { 
      pOUTPUT = new FileOutputStream(DefaultLogFileLocation); 
      pPRINT = new PrintStream(pOUTPUT); 
      pPRINT.println (pInputString + "\n"); 
      pPRINT.close(); 
     } 
     catch (Exception e) 
     { 
      System.err.println ("Error writing to file"); 
     } 
    } 
} 
+0

Pourquoi vous ne l'utilisez pas un cadre de journalisation Java? Par exemple. Java.util.logging, log4j, etc? – uthark

Répondre

7

Vous avez oublié de transmettre le paramètre constructeur pour indiquer que vous devez ajouter des données au fichier.

pOUTPUT = new FileOutputStream(DefaultLogFileLocation, true); 

Pourquoi ne pas utiliser Java Logging Framework? Par exemple. java.util.logging ou log4j

Exemple de configuration de log4j à écrire dans le fichier:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
    </appender> 

    <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="file" value="C:\\LOG.TXT" /> 
    <param name="datePattern" value="'.'yyyy-MM" /> 
    <param name="append" value="true" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n"/> 
    </layout> 
    </appender> 
    <root> 
    <priority value ="debug" /> 
    <appender-ref ref="FILE" /> 
    <appender-ref ref="console" /> 
    </root> 

+0

+1 pour avoir suggéré d'utiliser un cadre de journalisation existant. –

2

Je suggère d'utiliser le FileOutputStream constructor qui a un paramètre append.

Généralement, familiarisez-vous avec les Javadocs, ils peuvent répondre à des questions simples comme beaucoup plus rapidement que les gens ici.

Questions connexes