Wie verschiebt man eine Datei von einem Ort an einen anderen? Wenn ich mein Programm ausführe, wird jede an diesem Speicherort erstellte Datei automatisch an den angegebenen Speicherort verschoben. Woher weiß ich, welche Datei verschoben wird?
Wie verschiebt man eine Datei von einem Ort an einen anderen? Wenn ich mein Programm ausführe, wird jede an diesem Speicherort erstellte Datei automatisch an den angegebenen Speicherort verschoben. Woher weiß ich, welche Datei verschoben wird?
Antworten:
myFile.renameTo(new File("/the/new/place/newName.file"));
File # renameTo macht das (es kann nicht nur umbenennen, sondern auch zwischen Verzeichnissen wechseln, zumindest im selben Dateisystem).
Benennt die mit diesem abstrakten Pfadnamen angegebene Datei um.
Viele Aspekte des Verhaltens dieser Methode sind von Natur aus plattformabhängig: Der Umbenennungsvorgang kann eine Datei möglicherweise nicht von einem Dateisystem in ein anderes verschieben, ist möglicherweise nicht atomar und erfolgreich, wenn eine Datei mit dem abstrakten Zielpfadnamen erfolgreich ist ist bereits vorhanden. Der Rückgabewert sollte immer überprüft werden, um sicherzustellen, dass der Umbenennungsvorgang erfolgreich war.
Wenn Sie eine umfassendere Lösung benötigen (z. B. die Datei zwischen Datenträgern verschieben möchten ), lesen Sie Apache Commons FileUtils # moveFile
myFile
Pfad des Objekts durch diesen Befehl nicht aktualisiert wird. Es wird also auf eine Datei verweisen, die nicht mehr vorhanden ist.
Mit Java 7 oder neuer können Sie verwenden Files.move(from, to, CopyOption... options)
.
Z.B
Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);
Weitere Informationen finden Sie in der Dokumentation zu Dateien
Zum Verschieben einer Datei können Sie auch Jakarta Commons IOs verwenden FileUtils.moveFile verwenden
Bei einem Fehler IOException
wird ein ausgelöst. Wenn also keine Ausnahme ausgelöst wird, wissen Sie, dass die Datei verschoben wurde.
File.renameTo
von Java IO kann verwendet werden, um eine Datei in Java zu verschieben. Siehe auch diese SO-Frage .
Fügen Sie einfach die Quell- und Zielordnerpfade hinzu.
Alle Dateien und Ordner werden vom Quellordner in den Zielordner verschoben.
File destinationFolder = new File("");
File sourceFolder = new File("");
if (!destinationFolder.exists())
{
destinationFolder.mkdirs();
}
// Check weather source exists and it is folder.
if (sourceFolder.exists() && sourceFolder.isDirectory())
{
// Get list of the files and iterate over them
File[] listOfFiles = sourceFolder.listFiles();
if (listOfFiles != null)
{
for (File child : listOfFiles )
{
// Move files to destination folder
child.renameTo(new File(destinationFolder + "\\" + child.getName()));
}
// Add if you want to delete the source folder
sourceFolder.delete();
}
}
else
{
System.out.println(sourceFolder + " Folder does not exists");
}
Java 6
public boolean moveFile(String sourcePath, String targetPath) {
File fileToMove = new File(sourcePath);
return fileToMove.renameTo(new File(targetPath));
}
Java 7 (mit NIO)
public boolean moveFile(String sourcePath, String targetPath) {
boolean fileMoved = true;
try {
Files.move(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
fileMoved = false;
e.printStackTrace();
}
return fileMoved;
}
Sie können ein externes Tool für diese Aufgabe ausführen (wie copy
in Windows-Umgebungen). Um den Code portabel zu halten, gilt jedoch der folgende allgemeine Ansatz:
File#renameTo
funktioniert, solange sich Quell- und Zielspeicherort auf demselben Volume befinden. Persönlich würde ich es vermeiden, Dateien in verschiedene Ordner zu verschieben.
Versuche dies :-
boolean success = file.renameTo(new File(Destdir, file.getName()));
Files.move(source, target, REPLACE_EXISTING);
Sie können das Files
Objekt verwenden
Lesen Sie mehr über Dateien
Schrieb diese Methode, um genau dies in meinem eigenen Projekt nur mit der Ersetzungsdatei zu tun, wenn darin Logik vorhanden ist.
// we use the older file i/o operations for this rather than the newer jdk7+ Files.move() operation
private boolean moveFileToDirectory(File sourceFile, String targetPath) {
File tDir = new File(targetPath);
if (tDir.exists()) {
String newFilePath = targetPath+File.separator+sourceFile.getName();
File movedFile = new File(newFilePath);
if (movedFile.exists())
movedFile.delete();
return sourceFile.renameTo(new File(newFilePath));
} else {
LOG.warn("unable to move file "+sourceFile.getName()+" to directory "+targetPath+" -> target directory does not exist");
return false;
}
}
Bitte versuchen Sie dies.
private boolean filemovetoanotherfolder(String sourcefolder, String destinationfolder, String filename) {
boolean ismove = false;
InputStream inStream = null;
OutputStream outStream = null;
try {
File afile = new File(sourcefolder + filename);
File bfile = new File(destinationfolder + filename);
inStream = new FileInputStream(afile);
outStream = new FileOutputStream(bfile);
byte[] buffer = new byte[1024 * 4];
int length;
// copy the file content in bytes
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
// delete the original file
afile.delete();
ismove = true;
System.out.println("File is copied successful!");
} catch (IOException e) {
e.printStackTrace();
}finally{
inStream.close();
outStream.close();
}
return ismove;
}
close
Anweisungen in einem finally
Block befinden oder wenn ein Try-with-Resources-Block verwendet wird.
Sie können dies versuchen .. saubere Lösung
Files.move(source, target, REPLACE_EXISTING);