Java 将一个文件夹从一个位置移动到另一个位置
我试图使用下面的代码将一个文件夹从c:\root移动到另一个位置,比如说,直接移动到项目文件夹。变量Java 将一个文件夹从一个位置移动到另一个位置,java,Java,我试图使用下面的代码将一个文件夹从c:\root移动到另一个位置,比如说,直接移动到项目文件夹。变量newFolder被声明为类变量,它已在另一种方法中使用,用户可以将文件夹重命名为不同的名称,并保存我要移动的文件夹的名称。变量fileManager用于我要移动文件夹的新文件夹。当我运行这段代码时,我总是得到“文件夹”+fileManager。getName()+“不会被移动。”。因此,出于某种原因,它跳过if条件并转到else,而不将文件夹移动到我想要的位置。有人能告诉我如何修改代码以便将一个
newFolder
被声明为类变量,它已在另一种方法中使用,用户可以将文件夹重命名为不同的名称,并保存我要移动的文件夹的名称。变量fileManager
用于我要移动文件夹的新文件夹。当我运行这段代码时,我总是得到“文件夹”+fileManager。getName()+“不会被移动。”
。因此,出于某种原因,它跳过if
条件并转到else
,而不将文件夹移动到我想要的位置。有人能告诉我如何修改代码以便将一个文件夹从一个地方移动到另一个地方吗
File fileManager = new File(newFolder.getName());
try{
if(fileManager.renameTo(new File(fileManager.getName()))){
System.out.println("Folder " + fileManager.getName() + " is moved.");
}else{
System.out.println("Folder " + fileManager.getName() + " is not moved.");
}
}catch(Exception ex){
System.out.println("Error - Folder not found!");
}
我会改用Files.move方法,我对它没有任何问题。下面是一个使用文件而不是文件夹的示例
static File fileManager = new File("C:\\template.xls");
public static void main(String[] args) throws IOException {
Path originalPath = Paths.get(fileManager.getPath());
Path newPath = Paths.get(System.getProperty("user.dir")+ "\\template.xls");
if(Files.move(originalPath, newPath , StandardCopyOption.REPLACE_EXISTING) != null){
System.out.println("Folder " + fileManager.getName() + " is moved.");
}else{
System.out.println("Folder " + fileManager.getName() + " is not moved.");
}
}
正如gnomed所建议的,您还可以通过在原始文件夹/文件上调用renameTo方法来解决问题,在本例中可能是“newFolder”(混淆的名称),因为它看起来是对文件的实际引用。下面是修订后的代码
static File newFolder = new File("C:\\template.xls");
public static void main(String[] args) {
File fileManager = new File(newFolder.getName());
try{
if(newFolder.renameTo(fileManager)){
System.out.println("Folder " + fileManager.getName() + " is moved.");
}else{
System.out.println("Folder " + fileManager.getName() + " is not moved.");
}
}catch(Exception ex){
System.out.println("Error - Folder not found!");
}
}
您需要对现有的文件调用
renameTo()
您的代码当前正在尝试将新文件夹(fileManager)重命名为其他名称,但新文件夹(可能)在您的文件系统上不存在,因此它返回false,因为没有可重命名的内容
实际上,在这段代码中,我看不到任何看起来像原始文件句柄的东西,但是您需要原始文件才能重命名它
您的代码实际上什么也不做,因为它只是将文件重命名为自身:
fileManager.renameTo(新文件(fileManager.getName())
如果文件已经存在于操作系统上,我不确定这是否会返回true或false。如果将文件重命名为自身,是否算作“成功重命名”
您可能想要更像这样的东西(猜测变量名):
oldFileOrFolder.renameTo(文件管理器)
我还删除了新的文件构造函数,因为您的对象已经是File类型。老实说,我怀疑它是否跳过了条件。条件的结果很可能是false。如果您想确定,请将条件的值存储在布尔变量中,并在某个点输出。