【发布时间】:2010-11-22 11:04:47
【问题描述】:
我正在使用 WinXP。我使用 java 生成文件列表。文件一开始会创建为abc.txt.temp,生成完成后重命名为abc.txt。
但是,当我生成文件时,某些文件无法重命名。它是随机发生的。
有没有办法找出失败的原因?
int maxRetries = 60;
logger.debug("retry");
while (maxRetries-- > 0)
{
if (isSuccess = file.renameTo(file2))
{
break;
}
try
{
logger.debug("retry " + maxRetries);
Thread.sleep(1000);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//file.renameTo(file2);
Thread.currentThread().getThreadGroup().getParent().list();
结果:
[DEBUG][2009-08-25 08:57:52,386] - retry 1
[DEBUG][2009-08-25 08:57:53,386] - retry 0
java.lang.ThreadGroup[name=system,maxpri=10]
Thread[Reference Handler,10,system]
Thread[Finalizer,8,system]
Thread[Signal Dispatcher,9,system]
Thread[Attach Listener,5,system]
java.lang.ThreadGroup[name=main,maxpri=10]
Thread[main,5,main]
Thread[log4j mail appender,5,main]
[DEBUG][2009-08-25 08:57:54,386] - isSuccess:false
我想知道一个系统的方法来找出原因。谢谢。
【问题讨论】:
-
您是否捕捉到任何抛出的异常?
-
没有。一点也不例外。它只返回 false。
-
你能详细说明你在这里使用多线程吗?这听起来像是一种竞争条件,但如果没有更多信息,我无法开始猜测实际的故障点。
-
我没有在我的程序中创建任何新线程。我只是检查是否在我不知情的情况下创建了任何线程。
标签: java file file-io file-rename