我们可以重命名文件说test.txt来test1.txt?
如果test1.txt存在,它会重命名吗?
如何将其重命名为现有的test1.txt文件,以便将test.txt的新内容添加到其中以供以后使用?
无视我的上一篇文章,我发现了问题的根源.我正在使用
a.renameTo(b)
Run Code Online (Sandbox Code Playgroud)
当b不存在时.它不存在的原因是因为存在符号链接,所以如果b是/usr/name/folder/file,则b实际上是/mnt/MountTest因为符号链接到该目录.
所以问题是,是否有另一种方法使用字符串值在Java中重命名文件?如果没有,这个重命名程序怎么能以不同的方式完成?
我有eclipse插件jface应用程序.线程通过BufferedWriter写入文件.写完后我关闭缓冲区后我尝试重命名文件.
但有时文件不会重命名!
我尝试在几次重试之间添加一些Thread.Sleep(BIG_NUMBER),这没有用.
它看起来像文件获得某种锁定.(当我杀死jvm时,我可以重命名该文件).
有什么我可以做的吗?
操作系统:Windows XP,Windows 7 JAVA版本:1.5
在寻找如何做到这一点时,我发现了一些关于不同选项的模糊讨论,比如JNI和JNA,但在具体例子方面并不多.
上下文:如果Java File.renameTo()无法完成它的任务(无论出于何种原因; 它有点问题),我想回到直接使用这个本机Windows函数,它在kernel32.dll中定义(来自这个答案):
BOOL WINAPI MoveFile(
__in LPCTSTR lpExistingFileName,
__in LPCTSTR lpNewFileName
);
Run Code Online (Sandbox Code Playgroud)
那么,使用任何方法,您将如何从Java代码中调用该函数?我正在寻找最简单的方法,使用最少量的非Java代码或额外的步骤(例如在编译或部署中).