2013-07-23 3 views
6

मैं JDK 6 का उपयोग कर रहा हूं।जावा से निर्देशिका में फ़ाइल को दूसरी निर्देशिका में कैसे कॉपी करें

मेरे पास 2 फ़ोल्डर्स नाम Folder1 और Folder2 हैं।

Folder1 निम्न फ़ाइलें

TherMap.txt 

TherMap1.txt 

TherMap2.txt 

हर बार Folder2 केवल एक TherMap.txt के रूप में नाम के साथ फ़ाइल है है।

मैं क्या चाहता हूँ,

प्रतिलिपि folder1 से किसी भी फाइल और नाम के साथ Folder2 में चिपकाया के रूप में TherMap.txt है.अगर पहले से ही TherMap.txtFolder2 में मौजूद है, तो हटा सकते हैं और पेस्ट कर दें।

मैं के लिए code.but यह

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); 
     } 
    } 
} 

काम नहीं कर रहा निम्नलिखित लिखा था मैं 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"); 

में ऊपर फ़ंक्शन को कॉल करें जब मैं FileUtils समारोह का उपयोग कर रहा है, इसलिए मैं पर क्लिक करें यह त्रुटि दिखा त्रुटि, निम्नलिखित कोड के साथ स्वचालित रूप से नया पैकेज उत्पन्न किया गया था।

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 
    } 
} 

मेरा कोड कोई त्रुटि नहीं दिखा रहा है, यहां तक ​​कि यह काम नहीं कर रहा है।

मैं इसे कैसे ठीक कर सकता हूं।

धन्यवाद

+4

संभव डुप्लिकेट [फ़ाइलों की प्रतिलिपि:

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(); } } } 

आप 7 पर अपग्रेड करते हैं, तो आपको निम्न

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

संदर्भ ऐसा करने में सक्षम हो जाएगा जावा में एक निर्देशिका में एक निर्देशिका] (http: // stackoverflow।कॉम/प्रश्न/1146153/प्रतिलिपि-फाइल-से-एक-निर्देशिका-से-दूसरे-इन-जावा) –

+0

आपने अपाचेकॉमन्स का संदर्भ डाउनलोड और जोड़ा नहीं है। इसके बजाए, आपने अभी अपनी परियोजना में एक विधि स्टब बनाया है जो कॉपीफाइल स्कीमा से मेल खाता है। यदि आप ApacheCommons समाधान का पालन करना चाहते हैं, तो आपको संपूर्ण लाइब्रेरी डाउनलोड करनी होगी और इसके लिए एक संदर्भ जोड़ना होगा। – Ted

+0

इसके अतिरिक्त, आपको बनाए गए कॉपीफाइल विधि स्टब को हटाने की आवश्यकता होगी या अन्यथा आपके पास एक अस्पष्ट विधि कॉल होगी। – Ted

उत्तर

8

उपयोग Apache CommonsFileUtils FileUtils.copyDirectory(source, desc);

+0

मैं जावा पक्ष में नया हूं, इसलिए आप स्पष्ट रूप से समझा सकते हैं। जहां मुझे अपना कोड –

+0

बदलने की आवश्यकता है, मैं एक फ़ाइल को एक निर्देशिका से दूसरे निर्देशिका में कॉपी करना चाहता हूं। मैं निर्देशिका कॉपी और पेस्ट नहीं करना चाहता हूं। और मैं एक ही समय में सभी फाइलों को कॉपी और पेस्ट नहीं करना चाहता हूं। –

+0

@ सभी अगर कोई इस उत्तर को समझता है, तो मुझे बताएं। मैं 'जेआरई 6' का उपयोग कर रहा हूं। –

1

आपका कोड क्योंकि आदेश ApacheCommons समाधान का उपयोग करने में आप होगा ApacheCommons पुस्तकालय डाउनलोड करने के लिए काम नहीं कर रहा मिली:

http://commons.apache.org/

और इसके लिए एक संदर्भ जोड़ें।

चूंकि आप जेआरई 6 का उपयोग कर रहे हैं, इसलिए आप सभी एनआईओ फाइल यूटिलिटीज का उपयोग नहीं कर सकते हैं, और फोरम पोस्ट का जवाब देने के लिए अपाचे कॉमन्स से प्यार करने वाले हर किसी के बावजूद, आपको उस यूटिलिटी को सिर्फ उस पर जोड़ने का विचार पसंद नहीं है एक समारोह पाने के लिए। आप इस कोड का उपयोग भी कर सकते हैं जो हस्तांतरण का उपयोग करता है ApacheCommons का उपयोग किए बिना विधि से। से की

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

Standard concise way to copy a file in Java?

संबंधित मुद्दे

 संबंधित मुद्दे