Java FileOutputStream 字符串写入

发布于 2024-09-06 06:51:19 字数 694 浏览 6 评论 0原文

我一直遇到 Java 文件问题。它被设计为在测试文件中逐行写入日志。不幸的是,每次我调用它时它都会覆盖同一行。

如果有人能提供帮助,我将永远感激不已,因为这一直让我陷入困境!

代码如下。

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");
        }
    }
}

I’ve been having issues with a Java File. It's designed to write line after line in a test file as a log. Unfortunately it overwrites the same line every time I call it.

If anyone can help I would be eternally grateful as this has been driving me up the wall!

Code Below.

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");
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

╰◇生如夏花灿烂 2024-09-13 06:51:20

您忘记传递构造函数参数来指定需要将数据附加到文件。

pOUTPUT = new FileOutputStream(DefaultLogFileLocation, true);

另外,为什么不使用一些 Java 日志框架呢?例如 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>

You forgot to pass constructor parameter to specify you need to append data to file.

pOUTPUT = new FileOutputStream(DefaultLogFileLocation, true);

Also, why you don't use some Java Logging Framework? E.g. java.util.logging or log4j

Example of log4j configuration to write to file:

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

美煞众生 2024-09-13 06:51:20

我建议使用 FileOutputStream 构造函数 具有 append 参数。

一般来说,熟悉Javadocs,他们可以比这里的人更快地回答这样的简单问题。

I suggest using the FileOutputStream constructor that has an append parameter.

Generally, get familiar with the Javadocs, they can answer simple questions like that much more quickly than people here.

秋日私语 2024-09-13 06:51:20

尝试使用 pOUTPUT = new FileOutputStream(DefaultLogFileLocation, true);。请参阅 FileOutputStream()

Try using pOUTPUT = new FileOutputStream(DefaultLogFileLocation, true);. See FileOutputStream().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文