2 syd zh syd_zh 于 2014.11.21 16:44 提问

通过线程用BufferedWriter将系统当前时间写入日志文件失败,求大神指导

String path = "d:/log";
public synchronized void write(){

try {

file = new File("d:/log/"+time+".log");
file.createNewFile();
fw = new FileWriter(file);
bw = new BufferedWriter(fw);

bw.write(time,14,3);
} catch (IOException e) {
e.printStackTrace();
} finally{
if(fw!=null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
notifyAll();
}

不知道问题出在哪里,没法把毫秒的时间写进去,也没法把文件移到另一个文件夹并删掉原来的文件
求大神指导

4个回答

dopota1
dopota1   2014.11.21 17:13

转义字符的影响,导致是路径错误。用反斜杠\ 或者前缀@:@"d:/log/"+time+".log"

caozhy
caozhy   Ds   Rxr 2014.11.21 17:14

time是什么,里面是否包含冒号等作为文件名来说非法的字符,另外e.printStackTrace();,那么你把错误和堆栈贴出来啊。

caozhy
caozhy   Ds   Rxr 2014.11.21 17:15

另外Windows使用\反斜杠作为路径分割,如果你使用Windows而不是Linux的话,需要修改。

eagleyan
eagleyan   Rxr 2014.12.01 05:42

你问了2个问题

  1. 没法把毫秒的时间写进去,我猜你是说在程序运行过程中,你用tail或者其他方式并没看到时间,这个是正确的,因为BufferedWriter本来用的就是buffer,buffer满了才会写,如果你立刻希望看到输出,那你应该采用 PrintWriter pw = new PrintWriter(fw);
  2. 没法把文件移到另一个文件夹并删掉原来的文件, 我猜你是想在执行过程中做这件事,这是因为windows操作系统本省进程是独占文件的。当进程还没有关闭文件的时候,文件是被锁住的。有的时候即使你做了close,操作系统也不一定立刻真的释放了这个资源。这是windows的特性,在linux/unix/mac上并没有这个问题。
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
运用BufferedWriter把数据写入文件
转自:http://hi.baidu.com/spcwimzzwbnptzr/item/009d8f04d0d0f000acdc700c   前几天在学Android的时候,碰到把数据写入文件的操作。搞了很久就是不能将数据写入到文件中。先看个例子: File newFile = new File("Text.txt");    String data ="你好,Android.2011"
学习笔记 - BufferedWriter将字符串通过字符缓冲流写入文件
public class BufferedWriterTest { public static void main(String[] args) { // TODO Auto-generated method stub BufferedWriterTest bwt = new BufferedWriterTest(); bwt.bufferedWriter("呵可呵榀", "d:\
Java IO 之 BufferedReader BufferedWriter 通过缓冲区实现字符文本文件的复制
通过读文件和写文件都使用缓存 BufferedReader 和 BufferedWriter ,使得读写的效率都得到了提高。 以下是简单使用这2个缓冲类来实现复制一个文件的过程。 和使用FileReader和FileWriter是一样样的。只是原来我们自己要写个字符数组来实现缓冲的目的,现在可以直接使用jdk给的缓冲来实现复制文件的效率提升。 package com.lxk.FileTe
Java使用BufferedWriter写入文件
from: http://beginnersbook.com/2014/01/how-to-write-to-file-in-java-using-bufferedwriter/ /* 使用BufferedWriter写入文件内容,BufferedWriter与FileWriter结合使用, 好比BufferedReader与FileReader结合使用,File、FileInputSt
Java利用BufferedWriter写文本文件
在本地写入保存的操作,
JAVA-BufferedWriter写入文件没有内容
在练习使用BufferedWriter时发现写入文件是空白的。 然后发现没有关闭BufferedWriter对象时,写入是无效的。 FileOutputStream fis = new FileOutputStream(fileName); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fis,
使用BufferedReader和BufferedWriter按行读写文件
import java.io.*;   public class Test11 {       private static BufferedReader br = null;       private static File file = null;       private static BufferedWriter bw = null;       public static 
用fileWriter和bufferedwriter写入文件 出现中文问题
//FileReader fr = new FileReader("d:/d.txt"); //BufferedReader br = new BufferedReader(fr);  以上注释是常规写法,处理英文好使,处理中文就改为以下写法 FileOutputStream fr = new FileOutputStream(file); OutputStreamWriter
Java利用BufferedWriter和BufferedReader读写文本文件
public static void main(String[] args) { String[] content={"我是中国人","我爱我的祖国"};//创建 File file=new File("D:\\test\\c.txt");//创建文件目录对象 try { FileWriter fw=new FileWriter(file);//创建字符输出流类对象 BufferedWr
linux将当前时间写入文件
#!/bin/bash echo `date +"%Y-%m-%d %H:%M:%S"` begin >> ./a.log