- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
File oldFile = new File("old");
if (oldFile.renameTo(new File("new"))){
System.out.println(oldFile.getName());//this prints "old"
}
我查看了 openJDK 源代码,renameTo(File dest) 函数如下所示:
public class File implements Serializable, Comparable<File> {
static private FileSystem fs = FileSystem.getFileSystem();
private String path;
...
public boolean renameTo(File dest) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(path);
security.checkWrite(dest.path);
}
return fs.rename(this, dest);
}
...
}
所以路径变量永远不会改变。为什么呢?使用重命名的 File 变量的正确方法是什么?目前我是这样做的:
File oldFile = new File("/home/blin/misk/old");
File newFile = new File("/home/blin/misk/new");
if (oldFile.renameTo(newFile)){
oldFile=newFile;
System.out.println(oldFile.getName());//this prints "new"
}
最佳答案
最简单的解释是,to quote the Javadoc :
Instances of the
File
class are immutable; that is, once created, the abstract pathname represented by aFile
object will never change.
正如其他人所说,这里没有对错之分。然而,一旦库的设计者做出上述选择,renameTo
的当前行为就成为唯一可能的行为。
关于您的第二个代码片段,我看不出其中有任何缺陷。
关于java - 为什么 File.renameTo 不会改变 File 指向的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320409/
有很多关于 RenameTo 的帖子,但不幸的是,这些帖子似乎都不是我的问题或回答它:'( 我的问题是:我给我的程序一个文件,然后它应该加密它,计算加密文件的哈希值,并用这个哈希值重命名这个加密文件。
我需要通过将文件名中的 - 替换为 _ 来重命名文件。 假设文件名是ab-9.xml,它应该是ab_9.xml。 renameTo() 对我不起作用。还有其他方法可以做到这一点吗?这是我的代码: Fi
我尝试在 Java 中使用 renameTo 方法,但它只返回 false 并且不会移动文件。 我是不是少了一步?有没有办法找出为什么不移动文件? delete 方法也不执行任何操作。 这是我的代码,
Java 下面的代码是读取所有文件,并将数据发送到另一个方法(setOutput()),然后调用一个方法将最后读取的文件重命名到另一个目录,然后删除原始文件。在调用 smdrCleanup() 方法之
你能帮帮我吗? renameTo() 留下空的旧文件。所以我在文件系统中看到 2 个具有新名称和旧名称的文件。旧文件的大小为 0。如果我在重命名后删除旧文件,它会说该文件在文件系统中不存在。 目录的绝
我正在尝试通过 FTP 上传文件,但在上传之前必须将其重命名为 2 个 editText 的输入。为此,我使用以下代码: public FTPClient client = new FTPClient
我在媒体模块中运行了以下 Java 代码: File file = new File("/my/path/"+String.format("%02d", date)+"/"+streamAliasRe
我正在尝试重命名我的应用程序中的图像文件。但是代码不起作用。 基本上,我希望用户单击“重命名”按钮,弹出一个带有 editText 的警告对话框,用户输入图像的新名称,然后选择“重命名”选项。这应该重
我知道这个问题在这里可能已经被回答了一百万次,但我所看到的一切都没有帮助我。这是我的代码: for(File g: f.listFiles()){ for(File h : g.listFil
只是尝试使用 Java 重命名文件夹树的根目录。 使用 File.renameTo() 仅在 Windows 中有效,因为该文件夹根本没有任何内容。我似乎无法确定这是否是预期的行为。文档中似乎没有提到
File dir = new File(getFilesDir(), "dir1"); dir.renameTo(new File(getFilesDir(), "dir2"); Log.d("Num
我目前有一个文件监视器,它读取 XML 文件并根据内容更新数据库表。读取文件时,会根据特定模式对其进行验证,以确保内容正确。 验证的结果会影响要移动的文件的目的地。 如果架构成功,则将文件移动到已处理
import java.io.File; import org.apache.commons.io.FilenameUtils; public class Tester { public static
我有重命名文件然后立即尝试打开它的代码。 在 Windows XP 上,这有时(但很少)会抛出 FileNotFoundException。 renameTo 的返回值为真。 这是一个已知问题吗?也许
我有一个图片库应用程序,我尝试使用 renameTo() 方法重命名图像,但它无法更改文件名并返回 false。我读了很多关于重命名文件的问题,所有这些问题都建议只使用一种重命名文件的方法 - ren
这是我的代码,它非常简单: def dir = "C:\\Test" def folder = new File(dir) def files folder.setReadable(true) fol
我有 eclipse 插件 jface 应用程序。线程通过 BufferedWriter 写入文件。写入完成后,我关闭缓冲区,然后尝试重命名文件。 但有时文件没有重命名! 我尝试在几次重试之间添加一些
忽略我上一篇文章,我找到了问题的根源。我正在使用 a.renameTo(b) 当 b 不存在时。它不存在的原因是因为有一个符号链接(symbolic link)所以如果 b 是 /usr/name/f
我使用以下代码在 linux 上编辑文件 OIMV2Migration.sh。 String oldFileName = "OIMV2Migration.sh";//file to be ed
我希望能够重命名文件夹列表以删除不需要的字符(例如,点和双空格必须变成单个空格)。 单击 Gui 中的按钮后,您会看到一个消息框,其中显示了格式正确的名称,这表明格式正确且函数已被调用。当我查看我创建
我是一名优秀的程序员,十分优秀!