Kopieren Sie den Codecode wie folgt:
java.io.File importieren;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Java implementiert Dateikopier-, Ausschneide- und Löschvorgänge
* Datei bezieht sich auf eine Datei oder einen Ordner
* Verwenden Sie „//“ als Dateitrennzeichen
*/
öffentliche Klasse FileOperateDemo {
/**
* Dateien oder Ordner kopieren
* @param srcPath Der Pfad der Quelldatei oder des Quellordners
* @param destDir Das Verzeichnis, in dem sich die Zieldatei befindet
* @zurückkehren
*/
öffentliche statische boolesche KopieGeneralFile(String srcPath, String destDir) {
boolesches Flag = false;
Datei file = new File(srcPath);
if(!file.exists()) {//Die Quelldatei oder der Quellordner existiert nicht
return false;
}
if(file.isFile()) { // Datei kopieren
flag = copyFile(srcPath, destDir);
}
else if(file.isDirectory()) {// Ordnerkopie
flag = copyDirectory(srcPath, destDir);
}
Rückkehrflag;
}
/**
* Die Standardmethode zum Kopieren von Dateien überschreibt standardmäßig Dateien mit demselben Namen im Zielordner.
* @param srcPath
* Absoluter Pfad der Quelldatei
* @param destDir
* Das Verzeichnis, in dem sich die Zieldatei befindet
* @return boolean
*/
public static boolean copyFile(String srcPath, String destDir) {
return copyFile(srcPath, destDir, true/**overwriteExistFile*/);// Überschreibe standardmäßig die Datei mit demselben Namen
}
/**
* Die Standardmethode zum Kopieren eines Ordners überschreibt standardmäßig den gleichnamigen Ordner im Zielordner.
* @param srcPath Quellordnerpfad
* @param destPath Das Verzeichnis, in dem sich der Zielordner befindet
* @return boolean
*/
öffentliches statisches boolesches copyDirectory(String srcPath, String destDir) {
return copyDirectory(srcPath, destDir, true/**overwriteExistDir*/);
}
/**
* Dateien in das Zielverzeichnis kopieren
* @param srcPath
* Absoluter Pfad der Quelldatei
* @param destDir
* Das Verzeichnis, in dem sich die Zieldatei befindet
* @param overwriteExistFile
* Ob die Datei mit demselben Namen im Zielverzeichnis überschrieben werden soll
* @return boolean
*/
public static boolean copyFile(String srcPath, String destDir, boolean overwriteExistFile) {
boolesches Flag = false;
Datei srcFile = new File(srcPath);
if (!srcFile.exists() || !srcFile.isFile()) { // Die Quelldatei existiert nicht
return false;
}
//Den Dateinamen der zu kopierenden Datei abrufen
String fileName = srcFile.getName();
String destPath = destDir + File.separator +fileName;
File destFile = new File(destPath);
if (destFile.getAbsolutePath().equals(srcFile.getAbsolutePath())) { // Der Quelldateipfad und der Zieldateipfad werden dupliziert
return false;
}
if(destFile.exists() && !overwriteExistFile) { // Es gibt bereits eine Datei mit demselben Namen im Zielverzeichnis und ein Überschreiben ist nicht erlaubt
return false;
}
File destFileDir = new File(destDir);
if(!destFileDir.exists() && !destFileDir.mkdirs()) {// Das Verzeichnis existiert nicht und die Verzeichniserstellung schlägt fehl und wird direkt zurückgegeben
return false;
}
versuchen {
FileInputStream fis = new FileInputStream(srcPath);
FileOutputStream fos = new FileOutputStream(destFile);
byte[] buf = neues Byte[1024];
int c;
while ((c = fis.read(buf)) != -1) {
fos.write(buf, 0, c);
}
fos.flush();
fis.close();
fos.close();
Flag = wahr;
} Catch (IOException e) {
e.printStackTrace();
}
Rückkehrflag;
}
/**
*
* @param srcPath Quellordnerpfad
* @param destPath Das Verzeichnis, in dem sich der Zielordner befindet
* @zurückkehren
*/
public static boolean copyDirectory(String srcPath, String destDir, boolean overwriteExistDir) {
if(destDir.contains(srcPath))
return false;
boolesches Flag = false;
Datei srcFile = new File(srcPath);
if (!srcFile.exists() || !srcFile.isDirectory()) { // Der Quellordner existiert nicht
return false;
}
//Den Namen des zu kopierenden Ordners abrufen. Wenn der zu kopierende Ordner beispielsweise „E://dir//“ ist, lautet der erhaltene Name „dir“.
String dirName = srcFile.getName();
//Vollständiger Pfad zum Zielordner
String destDirPath = destDir + File.separator + dirName + File.separator;
File destDirFile = new File(destDirPath);
if(destDirFile.getAbsolutePath().equals(srcFile.getAbsolutePath())) {
return false;
}
if(destDirFile.exists() && destDirFile.isDirectory() && !overwriteExistDir) { // Es gibt einen Ordner mit demselben Namen am Zielspeicherort und das Überschreiben des Ordners mit demselben Namen ist nicht zulässig. Geben Sie dann direkt false zurück
return false;
}
if(!destDirFile.exists() && !destDirFile.mkdirs()) { // Wenn das Zielverzeichnis nicht existiert und das Erstellen des Verzeichnisses fehlschlägt
return false;
}
File[] fileList = srcFile.listFiles(); // Unterdateien und Unterordner unter dem Quellordner abrufen
if(fileList.length==0) { // Wenn der Quellordner ein leeres Verzeichnis ist, setzen Sie das Flag direkt auf true. Dieser Schritt ist sehr versteckt und wurde schon lange debuggt.
Flag = wahr;
}
anders {
for(Dateitemp: fileList) {
if(temp.isFile()) { // Datei
flag = copyFile(temp.getAbsolutePath(), destDirPath, overwriteExistDir); // Overwrite-Eigenschaften werden auch beim rekursiven Kopieren vererbt
}
else if(temp.isDirectory()) { // Ordner
flag = copyDirectory(temp.getAbsolutePath(), destDirPath, overwriteExistDir); // Overwrite-Eigenschaften werden auch beim rekursiven Kopieren vererbt
}
if(!flag) {
brechen;
}
}
}
Rückkehrflag;
}
/**
* Dateien oder Ordner löschen
* @param Pfad
* Der absolute Pfad der zu löschenden Datei
* @return boolean
*/
public static boolean deleteFile(String path) {
boolesches Flag = false;
Datei file = neue Datei (Pfad);
if (!file.exists()) { //Die Datei existiert nicht und wird direkt zurückgegeben
Rückkehrflag;
}
flag = file.delete();
Rückkehrflag;
}
/**
* Die Schneidemethode ist eine Erweiterung der oben genannten Methode: Kopieren + Löschen
* @param destDir Das Gleiche wie oben
*/
public static boolean cutGeneralFile(String srcPath, String destDir) {
boolesches Flag = false;
if(copyGeneralFile(srcPath, destDir) && deleteFile(srcPath)) { // Sowohl das Kopieren als auch das Löschen sind erfolgreich
Flag = wahr;
}
Rückkehrflag;
}
public static void main(String[] args) {
/** Testkopiedatei*/
System.out.println(copyGeneralFile("d://test/test.html", "d://test/test/")); // Allgemeines normales Szenario
System.out.println(copyGeneralFile("d://notexistfile", "d://test/")); // Nicht vorhandene Dateien oder Ordner kopieren
System.out.println(copyGeneralFile("d://test/test.html", "d://test/")); // Die zu kopierende Datei befindet sich im selben Verzeichnis wie die Zieldatei
System.out.println(copyGeneralFile("d://test/test.html", "d://test/test/")); // Datei mit demselben Namen im Zielverzeichnis überschreiben
System.out.println(copyFile("d://test/", "d://test2", false));//Dateien mit demselben Namen im Zielverzeichnis nicht überschreiben
System.out.println(copyGeneralFile("d://test/test.html", "notexist://noexistdir/")); // Kopieren Sie die Datei in ein Verzeichnis, das nicht existieren oder erstellt werden kann.
System.out.println("---------");
/** Testkopie-Ordner*/
System.out.println(copyGeneralFile("d://test/", "d://test2/"));
System.out.println("---------");
/** Testlöschung von Dateien*/
System.out.println(deleteFile("d://a/"));
}
}