首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

多线程读写的有关问题

2012-01-02 
多线程读写的问题在一个程序中,因为是多线程环境,可能同时有多个线程在写一个文件,我写的方法如下:synchro

多线程读写的问题
在一个程序中,因为是多线程环境,可能同时有多个线程在写一个文件,我写的方法如下:
synchronized   void   recordErr(URL   url)
{
try
{
BufferedWriter   bw=new   BufferedWriter(new   FileWriter( "E:\\eclipse\\workspace\\Rev/err.txt "));
bw.write(url.toString());
bw.newLine();
bw.flush();
bw.close();
}
catch   (IOException   e)
{
//   TODO   自动生成   catch   块
System.out.println( "RecordErr   failed     "+url.toString());
e.printStackTrace();
}
}

我调试的时候发现,最后记录中总是只有一条记录,也就是,覆盖了其它结果了,不知道为什么?请指教。

[解决办法]
写入方式为APPEND
[解决办法]
你现在方法是重新文件,应该用追加模式
[解决办法]
楼主:IO的关闭操作最好在finally中执行,你这样的代码在try中出现异常时,文件流不会关闭!!
[解决办法]
因为BufferedWriter bw=new BufferedWriter(new FileWriter( "E:\\eclipse\\workspace\\Rev/err.txt "));这句在方法里面
,每次都是重新读取文件,每调用该方法一次,重写写文件,所以文件里只有
一条数据,可以用RandomAccessFile读取文件,每次在文件的末
尾写入数据,这样就不会只有一条数据
[解决办法]
BufferedWriter bw=new BufferedWriter(new FileWriter( "E:\\eclipse\\workspace\\Rev/err.txt "));
改成
BufferedWriter bw=new BufferedWriter(new FileWriter( "E:\\eclipse\\workspace\\Rev/err.txt ",true));
[解决办法]
BufferedWriter bw=new BufferedWriter(new FileWriter( "E:\\eclipse\\workspace\\Rev/err.txt "));
改成
BufferedWriter bw=new BufferedWriter(new FileWriter( "E:\\eclipse\\workspace\\Rev/err.txt ",true));

热点排行