有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何找出重命名失败的原因?

我正在使用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

我想知道一个系统的方法来找出原因。谢谢


共 (3) 个答案

  1. # 2 楼答案

    renameTo失败的三个主要原因(对于Android,但你可能也会发现这很有用)

    1)如果要将文件夹从位置a移动到位置b,则目标文件夹可能是文件!创建destinationFolder。mkdirs()使其成为文件

    2)目标文件夹可能已经存在!删除destinationFolder,以便可以使用Rename to将旧文件移动到新位置

    3)将内部存储移动到外部存储需要许可,因为读写SD卡需要许可

  2. # 3 楼答案

    我也有类似的问题,但这是unix的问题
    重命名随机失败。我重新启动了这个过程3到4次,最终成功了
    仅供参考,该文件由同一进程创建,并由同一进程重命名