2013-07-23 13 views
6

Ich verwende JDK 6.So kopieren Sie eine Datei aus einem Verzeichnis in ein anderes Verzeichnis in Java

Ich habe 2 Ordner Namen sind Folder1 und Folder2.

Folder1 besitzen die folgenden Dateien

TherMap.txt 

TherMap1.txt 

TherMap2.txt 

jedes Mal Folder2 als TherMap.txt nur eine Datei mit dem Namen haben.

Was ich will,

Kopie jeder Datei von folder1 und in Folder2 mit Namen klebte wie TherMap.txt .Wenn bereits TherMap.txt in Folder2 vorhanden ist, dann löschen und einfügen.

für schrieb ich folgendes code.but es nicht funktioniert

public void FileMoving(String sourceFilePath, String destinationPath, String fileName) throws IOException { 
    File destinationPathObject = new File(destinationPath); 
    File sourceFilePathObject = new File(sourceFilePath); 
    if ((destinationPathObject.isDirectory()) && (sourceFilePathObject.isFile())) 
    //both source and destination paths are available 
    { 
     //creating object for File class 
     File statusFileNameObject = new File(destinationPath + "/" + fileName); 
     if (statusFileNameObject.isFile()) 
     //Already file is exists in Destination path 
     { 
      //deleted File 
      statusFileNameObject.delete(); 
      //paste file from source to Destination path with fileName as value of fileName argument 
      FileUtils.copyFile(sourceFilePathObject, statusFileNameObject); 
     } 
     //File is not exists in Destination path. 
     { 
      //paste file from source to Destination path with fileName as value of fileName argument 
      FileUtils.copyFile(sourceFilePathObject, statusFileNameObject); 
     } 
    } 
} 

ich in main()

//ExternalFileExecutionsObject is class object 
ExternalFileExecutionsObject.FileMoving(
      "C:/Documents and Settings/mahesh/Desktop/InputFiles/TMapInput1.txt", 
      "C:/Documents and Settings/mahesh/Desktop/Rods", 
      "TMapInput.txt"); 

die obige Funktion aufrufen Während ich FileUtils Funktion verwende, es Fehler zeigt, so ich auf Fehler, automatisch neues Paket wurde mit dem folgenden Code generiert.

package org.apache.commons.io; 
import java.io.File; 
public class FileUtils { 
    public static void copyFile(File sourceFilePathObject, 
     File statusFileNameObject) { 
     // TODO Auto-generated method stub 
    } 
} 

mein Code zeigt keine Fehler, auch es funktioniert nicht.

Wie kann ich das beheben?

Dank

+4

möglich Duplikat [Kopieren von Dateien aus ein Verzeichnis zu einem anderen in Java] (http: // stackoverflow.com/questions/1146153/Kopieren von Dateien aus einem Verzeichnis in ein anderes-in-Java) –

+0

Sie haben keine Referenz auf ApacheCommons heruntergeladen und hinzugefügt. Stattdessen haben Sie in Ihrem Projekt einen Methoden-Stub erstellt, der dem copyFile-Schema entspricht. Wenn Sie der ApacheCommons-Lösung folgen möchten, müssen Sie die gesamte Bibliothek herunterladen und eine Referenz hinzufügen. – Ted

+0

Darüber hinaus müssen Sie den von Ihnen erstellten copyFile-Methodenstub löschen, da andernfalls ein mehrdeutiger Methodenaufruf erfolgt. – Ted

Antwort

8

Verwenden Apache CommonsFileUtils FileUtils.copyDirectory(source, desc);

+0

Ich bin neu auf Java-Seite, also können Sie klar erklären. Wo ich meinen Code ändern muss –

+0

Ich möchte eine Datei von einem Verzeichnis in ein anderes Verzeichnis kopieren. Ich möchte Verzeichnis nicht kopieren und einfügen. Außerdem möchte ich nicht alle Dateien gleichzeitig kopieren und einfügen. –

+0

@All Wenn jemand diese Antwort verstanden hat, lass es mich wissen. Ich benutze 'JRE 6'. –

1

Ihr Code ist nicht da, um arbeiten Sie die Apache Commons Lösung zu verwenden, wird hier die Apache Commons Bibliothek gefunden haben zum Download:

http://commons.apache.org/

und fügen Sie einen Verweis hinzu.

Da Sie JRE 6 verwenden, können Sie nicht alle NIO-Datei-Dienstprogramme verwenden, und obwohl alle Apache Commons als schnelle Möglichkeit zum Beantworten von Forumsbeiträgen lieben, mögen Sie die Idee, dieses Dienstprogramm nur hinzuzufügen, nicht um eine Funktion zu bekommen. Sie können diesen Code auch verwenden, der eine TransferFrom-Methode verwendet, ohne ApacheCommons zu verwenden.

public static void copyFile(File sourceFile, File destFile) throws IOException { 
    if (!destFile.exists()) { 
    destFile.createNewFile(); 
    } 
    FileInputStream fIn = null; 
    FileOutputStream fOut = null; 
    FileChannel source = null; 
    FileChannel destination = null; 
    try { 
    fIn = new FileInputStream(sourceFile); 
    source = fIn.getChannel(); 
    fOut = new FileOutputStream(destFile); 
    destination = fOut.getChannel(); 
    long transfered = 0; 
    long bytes = source.size(); 
    while (transfered < bytes) { 
     transfered += destination.transferFrom(source, 0, source.size()); 
     destination.position(transfered); 
    } 
    } finally { 
    if (source != null) { 
     source.close(); 
    } else if (fIn != null) { 
     fIn.close(); 
    } 
    if (destination != null) { 
     destination.close(); 
    } else if (fOut != null) { 
     fOut.close(); 
    } 
    } 
} 

Wenn Sie zu 7 aktualisieren, erhalten Sie folgende

public static void copyFile(File from, File to) throws IOException { 
    Files.copy(from.toPath(), to.toPath()); 
} 

Referenz der Lage zu tun:

https://gist.github.com/mrenouf/889747

von

Standard concise way to copy a file in Java?

Verwandte Themen