gpt4 book ai didi

java - LibGDX 文件句柄 : Renaming a file deletes the file

转载 作者:行者123 更新时间:2023-12-02 02:25:51 25 4
gpt4 key购买 nike

要重命名我使用的文件

FileHandle#moveTo(FileHandle dest)

在大多数情况下它工作得很好。但是,当我尝试将文件“abc”重命名为“ABC”时,该文件会被删除。我认为问题在于文件名不敏感(至少在桌面、Windows 上)。这就是上面提到的方法的实现(我在代码中留下了注释):

public void moveTo (FileHandle dest) {
if (type == FileType.Classpath) throw new GdxRuntimeException("Cannot move a classpath file: " + file);
if (type == FileType.Internal) throw new GdxRuntimeException("Cannot move an internal file: " + file);
copyTo(dest); // file is not copied into another file, since "abc" file is the same as the dest "ABC" file
delete(); // and here the "original" file is deleted, but in this case original file equals to dest file, so the file is lost
if (exists() && isDirectory()) deleteDirectory();
}

问题:

1) 这种行为是故意的吗?老实说,感觉不对。

2)像这样重命名可以吗(在这种情况下有效,但也许还有其他注意事项):

FileHandle src = ...;
FileHandle dest = ...;
src.file().renameTo(dest.file());

如果不行,正确的方法是什么?

更新

按照@exenza的建议,打开了一个issue关于 LibGDX 问题跟踪器

最佳答案

在 Windows 上,文件名不区分大小写。这意味着“abc”和“ABC”引用同一个文件。您的 copyTo() 调用会将文件复制到自身。然后delete()删除该文件。在所有这一切过程中,只有一个文件,没有副本。

关于java - LibGDX 文件句柄 : Renaming a file deletes the file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47781886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com