2010-06-22 140 views
4

我一直在遇到Java文件的問題。它被設計成在測試文件中以行爲形式作爲日誌寫入。不幸的是,每次我打電話時都會覆蓋同一行。Java FileOutputStream字符串寫入

如果有人能幫助,我會永遠感激,因爲這已經把我推上了牆!

代碼如下。

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

爲什麼你不使用一些Java日誌框架?例如。 Java.util.logging,log4j等? – uthark 2010-06-22 16:26:06

回答

7

您忘記傳遞構造函數參數來指定您需要將數據追加到文件。

pOUTPUT = new FileOutputStream(DefaultLogFileLocation, true); 

另外,爲什麼不使用一些Java Logging Framework?例如。 java.util.logginglog4j

log4j配置的實例寫入文件:

<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用於建議使用現有的日誌記錄框架。 – 2010-06-22 17:11:09

2

我建議使用具有一個append參數FileOutputStream constructor

通常,熟悉Javadocs,他們可以比這裏的人更快地回答這樣的簡單問題。