Java FileOutputStream 字符串写入
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3095009/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Java FileOutputStream String Writing
提问by Maull
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.
我一直遇到 Java 文件的问题。它旨在将测试文件中的一行一行写入作为日志。不幸的是,每次我调用它时它都会覆盖同一行。
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");
}
}
}
回答by uthark
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.loggingor log4j
另外,为什么不使用一些 Java Logging Framework?例如java.util.logging或log4j
Example of log4j configuration to write to file:
写入文件的 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>
回答by Michael Borgwardt
I suggest using the FileOutputStreamconstructorthat has an appendparameter.
我建议使用具有参数的FileOutputStream构造append函数。
Generally, get familiar with the Javadocs, they can answer simple questions like that much more quickly than people here.
一般来说,熟悉Javadocs,他们可以比这里的人更快地回答这样的简单问题。
回答by Teja Kantamneni
Try using pOUTPUT = new FileOutputStream(DefaultLogFileLocation, true);. [Javadoc][1] here.
尝试使用pOUTPUT = new FileOutputStream(DefaultLogFileLocation, true);. [Javadoc][1] 在这里。
[1]: http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File, boolean)
[1]:http: //java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File, boolean)

