Java – how do I rename a file to another file system?

I encountered a strange problem when using renameto() I don't know why I can't rename it / MNT / desttest, but I can rename it / home / kit ho/desttest. However, I have granted each write permission to / MNT / The return value is false without specific reason Who knows why?

import java.io.File;
public class renameFile {
    public static void main(String[] args) {
        File sourceFile = new File("/home/kit.ho/test");  
        File targetFile1 = new File("/mnt/desttest");  
        System.out.println("source file is exist? " + sourceFile.exists() + ",source file => " + sourceFile);  
        System.out.println(targetFile1 + " is exist? " + targetFile1.exists());  
        System.out.println("rename to " + targetFile1 + " => " + sourceFile.renameTo(targetFile1));  
        System.out.println("source file is exist? " + sourceFile.exists() + ",source file => " + sourceFile);   
    }
}

Editor: finally, according to some answers, the rename function cannot work across file systems. Has this problem been solved because external commands such as "MV" are not called?

Solution

Create a method to copy files and call this method (this is the method I use when renameto() doesn't work):

void copyFile(File source,File destination) throws Exception {
  FileInputStream inputStream = new FileInputStream(source);
  FileOutputStream outputStream = new FileOutputStream(destination);
  int b = -1;
  while ((b = inputStream.read()) != -1) {
    outputStream.write(b);
  }
  inputStream.close();
  outputStream.close();
}

Edit: if you want to move a file, delete the original after copying

Edit: better is FileUtils moveFile() from Apache Commons library

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>