2013-10-22 36 views
2
//original file 
Path original = Paths.get("C:\\Users\\Laksahan\Desktop\\bg.jpg"); 
File f = new File("C:\\Users\\Laksahan\\Desktop\\bg.jpg"); 

// new file 
Path destination = Paths.get("C:\\Program Files\\Tour v0.1\\image\\"+f.getName()); 
try { 
    Files.copy(original, destination, LinkOption.NOFOLLOW_LINKS); 
} catch (IOException x) { 
    x.printStackTrace(); 
} 

我想上面的方法來複制文件,它不會工作,它打印此錯誤錯誤而拷貝從源文件到目的地的Java

java.nio.file.NoSuchFileException: C:\Users\Laksahan\Desktop\bg.jpg -> C:\Program Files\Tour v0.1\image\bg.jpg 

請幫助

+1

我試過相同的代碼,它爲我工作。 由於您在Program Files中的C驅動器中執行此操作,因此可能存在權限問題。 –

+0

@Mukesh我沒有檢查它在C:\\但它說相同的錯誤 – user2136160

+0

@Mukesh它的工作D:驅動器 – user2136160

回答

3

嘗試

Path original = Paths.get("C:\\Users\\Laksahan\\Desktop\\bg.jpg"); 

而不是

Path original = Paths.get("C:\\Users\\Laksahan\Desktop\\bg.jpg"); 

例如創建一個文件夾編程 -

Path from = Paths.get("C:\\Users\\Laksahan\\Desktop\\bg.jpg"); 
Path to = Paths.get("C:\\Program Files\\Tour v0.1\\image\\"); 
Path destination; 

File f = new File("C:\\Users\\Laksahan\\Desktop\\bg.jpg"); 

if (!Files.exists(to)) { 
    try { 
     Files.createDirectories(to); 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } 

    destination = Paths.get(to.toString() + "\\" + f.getName()); 
    try { 
     Files.copy(from, destination, LinkOption.NOFOLLOW_LINKS); 
    } catch (FileAlreadyExistsException faee) { 
     faee.printStackTrace(); 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } 
} 
+0

這可能只是一個錯字。 '\ D'不是有效的轉義序列,因此代碼不會被編譯。 –

+0

是的,你是對的。 –

8

如果使用Files.copy()當它不存在的Java 7的NIO 不會創建一個文件夾。

您可以做的最好的辦法是檢查該文件夾,並在您撥打電話copy前不存在的情況下創建該文件夾。

0

我不確定你的工作環境,但是如果它比windows-XP更新,"C:\\Program Files\\"的位置除了安裝程序服務以外任何人都無法訪問,或者除非您明確通過安全設置提供權限。

您嘗試複製到任何其他位置。它應該工作

+0

我不認爲這會產生'NoSuchFileException'。 –

+0

thanx很好** **:但我想在** C:**驅動器上運行 – user2136160

+0

@ user2136160它也可以在c盤上運行,但是某些目錄(屬於操作系統本身的那些目錄)受到保護。如Program Files,Windows,System,Program Files(x86)。 – Ankit