大虾们帮我看一下代码吧,为什么test.txt文件里写不进去Hello呀,谢谢了~
public class Log {
static String fileName;
static PrintWriter pw=null;
public static void setOutputFile(String fileName) {
if(pw!=null) {
pw.close();
}
Log.fileName = fileName;
try {
pw = new PrintWriter(fileName);
}
catch(IOException e) {
System.err.println("ERROR opening log file: "+e.getMessage());
}
}
public static void log(String s) {
Log.fileName = s;
try {
pw = new PrintWriter(fileName);
}
catch(IOException e) {
System.err.println("ERROR opening log file: "+e.getMessage());
}
pw.write(s);
pw.write("\n");
}
}
public static void flush() {
pw.flush();
}
public static void close() {
if(pw != null) {
pw.close();
}
}
public static class WhiteBoxTest extends TestCase {
public static void log() {
Log.setOutputFile("c:\\tmp\\Test.txt");
Log.setLogLevel(8);
Log.log("Hello");
Log.close();
}
}
}
public class Log {
static String fileName;
static PrintWriter pw=null;
public static void setOutputFile(String fileName) {
if(pw!=null) {
pw.close();
}
Log.fileName = fileName;
try {
pw = new PrintWriter(fileName);
}
catch(IOException e) {
System.err.println("ERROR opening log file: "+e.getMessage());
}
}
public static void log(String s) {
Log.fileName = s;
try {
pw = new PrintWriter(fileName);
}
catch(IOException e) {
System.err.println("ERROR opening log file: "+e.getMessage());
}
pw.write(s);
pw.write("\n");
}
}
public static void flush() {
pw.flush();
}
public static void close() {
if(pw != null) {
pw.close();
}
}
public static class WhiteBoxTest extends TestCase {
public static void log() {
Log.setOutputFile("c:\\tmp\\Test.txt");
Log.setLogLevel(8);
Log.log("Hello");
Log.close();
}
}
}
解决方案 »
- 配置了一个Access数据源后,只能使用一次!!!吓人!!!为嘛呢?
- 用jxl 取excel中 货币格式 的问题
- J2ME?
- 在Frame 中如何加入图片!!!
- Java 中import了不使用的package会影响编译或执行效率吗?
- 这是为什么?
- 100分: 如何在bean中返回一个记录集,以及如何实用这个记录集.
- 迷惑!《java2编程详解》中一个applet的小例子!
- 我用JB7新建了一个工程,又新建了个类。点运行,可是出现了PROJECT-》PROPERTY-》RUN,请问我应该在这里怎么设置啊?
- 有谁知道我错在呢啊???
- 一个简单的问题~~不知道哪出错了!很乱啊
- 大家帮忙瞧瞧,JTextField取值与数据库查寻语句对比问题!
pw.write(s);
pw.write("\n"); //
pw.flush();
}
Log.fileName = s;
if (pw == null) {
setOutputFile(fileName);
}
// try {
// pw = new PrintWriter(fileName);
// } catch (IOException e) {
// System.err.println("ERROR opening log file: " + e.getMessage());
// }
pw.write(s);
pw.write("\n");
}
之前,你用Log.setOutputFile("c:\\tmp\\Test.txt"); 为pw创建了一个PrintWriter的引用。
在Log.log(s)里面,你又创建了另外一个引用。由于JVM的垃圾收集器总是滞后的,所以,你最早创建PrintWriter还在内存里没释放,并且仍然控制着"c:\\tmp\\Test.txt"。所以,可能出现这样的情况,或者新建PrintWriter写不进去,或者,当最早创建的PrinterWriter关闭时,覆盖你写好的文件。 try {
pw = new PrintWriter(fileName);
} catch (IOException e) {
System.err.println("ERROR opening log file: " + e.getMessage());
}
public static void main(String[] s) {
Log.setOutputFile("c:\\Test.txt");
// Log.setLogLevel(8);
pw.write("first message.");
Log.log("Hello");
//Log.flush();
Log.close();
}文件还是空白,所以,不是被覆盖,而是拒绝后面的PrintWriter写入