2012-02-10 16 views
8

Chciałbym skopiować plik z jednego katalogu do drugiego przy użyciu Java i klas FileUtils z Apache org commons.Java - Kopiowanie pliku do innego katalogu przy użyciu FileUtils i copyFileToDirectory - nie działa -?

Napisałem szybki program java do przetestowania w moim systemie lokalnym. Oto kod. Plik istnieje, ale kopiowanie pliku do innego katalogu nie działa. czego mi brakuje? Czy istnieje gdzieś niewłaściwa składnia?

import org.apache.commons.io.FileUtils; 
import java.io.File; 

class MoveFile { 

    public static void main(String[] args) { 
     MoveFile myobj = new MoveFile(); 
     myobj.moveTheFile(); 
    } 

    public void moveTheFile() { 
     try { 
      File destDir = new File("C:\\Folder1\\temp2"); 
      File srcFile = new File("C:\\Folder1\\temp\\card.png"); 
      FileUtils.copyFileToDirectory(srcFile, destDir); 
     } catch(Exception e) { 
     } 
    } 

} 
+2

co to znaczy, że nie działa? jakieś błędy? dane nie zostały skopiowane? – kosa

+0

Czy istnieje plik początkowy? czy istnieje katalog docelowy? co mówi wyjątek, gdy się nie powiedzie? –

+0

Oba pliki i katalog istnieją. Nie ma zarejestrowanych żadnych wyjątków. – katura

Odpowiedz

9

Powtórzyć błąd i kończy się niepowodzeniem tylko wtedy, gdy program nie ma uprawnień do zapisu w folderze docelowym. Nawet przechwytywanie podsypki i drukowanie stosu nie pokazuje żadnych informacji, a metoda jest całkiem cicha ... jeśli folder nie istnieje, metoda tworzy go, więc pomija tę możliwą korektę.

Sprawdź uprawnienia do zapisu w folderze docelowym

+0

Przeanalizowałem jeden błąd w zmiennej katalogu docelowego - powinien to być folder Folder1/temp/temp2. Katalog miał uprawnienia "tylko do odczytu", więc to zmieniłem. Teraz program testowy działa. Dziękuję za pomoc. – katura

2

Nigdy nie jest dobrym pomysłem wypowiadanie wyjątków. Wykonaj e.printstacktrace() w swoim mechanizmie wyjątków, aby uzyskać więcej informacji. Ponieważ nie podano żadnych innych informacji, pierwszą rzeczą, która przychodzi do głowy, jest to, że jeśli korzystasz z systemu Windows Vista lub nowszego, zwykle poprosi Cię o zgodę administratora podczas umieszczania elementów bezpośrednio w katalogu C:\.

Aby sprawdzić, czy to jest problem, polecam przetestować to w innych katalogach, takich jak My Documents lub też wyłączyć UAC.

1

Czy

destDir.mkdirs(); 

lub

FileUtils.forceMkdir(destDir); 

utworzyć katalog temp2 pierwszy.

+0

Katalog temp2 jest już utworzony w systemie, więc katalog nie będzie potrzebny. – katura

Powiązane problemy