आप किसी फ़ाइल को एक स्थान से दूसरे स्थान पर कैसे ले जाते हैं? जब मैं अपना प्रोग्राम चलाता हूं, तो उस स्थान पर बनाई गई कोई भी फ़ाइल स्वचालित रूप से निर्दिष्ट स्थान पर चली जाती है। मुझे कैसे पता चलेगा कि किस फ़ाइल को स्थानांतरित किया गया है?
आप किसी फ़ाइल को एक स्थान से दूसरे स्थान पर कैसे ले जाते हैं? जब मैं अपना प्रोग्राम चलाता हूं, तो उस स्थान पर बनाई गई कोई भी फ़ाइल स्वचालित रूप से निर्दिष्ट स्थान पर चली जाती है। मुझे कैसे पता चलेगा कि किस फ़ाइल को स्थानांतरित किया गया है?
जवाबों:
myFile.renameTo(new File("/the/new/place/newName.file"));
फ़ाइल # renameTo करता है (यह न केवल नाम बदल सकता है, बल्कि निर्देशिकाओं के बीच भी जा सकता है, कम से कम एक ही फ़ाइल सिस्टम पर)।
इस अमूर्त पथनाम द्वारा निरूपित फ़ाइल का नाम बदलें।
इस पद्धति के व्यवहार के कई पहलू स्वाभाविक रूप से प्लेटफ़ॉर्म-निर्भर हैं: नाम बदलने की प्रक्रिया एक फ़ाइल सिस्टम से दूसरे फाइल में स्थानांतरित करने में सक्षम नहीं हो सकती है, यह परमाणु नहीं हो सकती है, और यह सफल नहीं हो सकती है यदि गंतव्य सार पथ के साथ एक फ़ाइल पहले से ही मौजूद है। रिटर्न वैल्यू को हमेशा यह सुनिश्चित करने के लिए जांचना चाहिए कि नाम बदलने का ऑपरेशन सफल रहा।
यदि आपको अधिक व्यापक समाधान की आवश्यकता है (जैसे डिस्क के बीच फ़ाइल को स्थानांतरित करना चाहते हैं), Apache Commons FileUtils # MoveFile को देखें
myFile
का पथ इस कमांड द्वारा अपडेट नहीं किया गया है। तो यह एक ऐसी फ़ाइल की ओर इशारा करेगा जो अब नहीं है।
जावा 7 या नए के साथ आप उपयोग कर सकते हैं Files.move(from, to, CopyOption... options)
।
उदाहरण के लिए
Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);
देखें फ़ाइलें अधिक जानकारी के लिए प्रलेखन
एक फ़ाइल को स्थानांतरित करने के लिए आप जकार्ता कॉमन्स IOs FileUtils.moveFile का उपयोग कर सकते हैं
त्रुटि पर यह एक फेंकता है IOException
, इसलिए जब कोई अपवाद नहीं फेंका जाता है तो आप जानते हैं कि फ़ाइल स्थानांतरित हो गई थी।
File.renameTo
जावा से एक फ़ाइल को स्थानांतरित करने के लिए IO का उपयोग किया जा सकता है। इस SO प्रश्न को भी देखें ।
बस स्रोत और गंतव्य फ़ोल्डर पथ जोड़ें।
यह स्रोत फ़ोल्डर से गंतव्य फ़ोल्डर में सभी फ़ाइलों और फ़ोल्डर को स्थानांतरित करेगा।
File destinationFolder = new File("");
File sourceFolder = new File("");
if (!destinationFolder.exists())
{
destinationFolder.mkdirs();
}
// Check weather source exists and it is folder.
if (sourceFolder.exists() && sourceFolder.isDirectory())
{
// Get list of the files and iterate over them
File[] listOfFiles = sourceFolder.listFiles();
if (listOfFiles != null)
{
for (File child : listOfFiles )
{
// Move files to destination folder
child.renameTo(new File(destinationFolder + "\\" + child.getName()));
}
// Add if you want to delete the source folder
sourceFolder.delete();
}
}
else
{
System.out.println(sourceFolder + " Folder does not exists");
}
जावा 6
public boolean moveFile(String sourcePath, String targetPath) {
File fileToMove = new File(sourcePath);
return fileToMove.renameTo(new File(targetPath));
}
जावा 7 (NIO का उपयोग करके)
public boolean moveFile(String sourcePath, String targetPath) {
boolean fileMoved = true;
try {
Files.move(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
fileMoved = false;
e.printStackTrace();
}
return fileMoved;
}
आप उस कार्य के लिए एक बाहरी टूल निष्पादित कर सकते हैं (जैसे copy
कि विंडोज़ के वातावरण में) लेकिन, कोड को पोर्टेबल रखने के लिए, सामान्य तरीका यह है:
File#renameTo
जब तक स्रोत और लक्ष्य स्थान एक ही वॉल्यूम पर हैं, तब तक काम करेंगे। व्यक्तिगत रूप से मैं इसे अलग-अलग फ़ोल्डर में फ़ाइलों को स्थानांतरित करने के लिए उपयोग करने से बचूंगा।
इसे इस्तेमाल करे :-
boolean success = file.renameTo(new File(Destdir, file.getName()));
Files.move(source, target, REPLACE_EXISTING);
आप Files
ऑब्जेक्ट का उपयोग कर सकते हैं
फ़ाइलों के बारे में अधिक पढ़ें
इस पद्धति को अपने प्रोजेक्ट पर केवल प्रतिस्थापित फ़ाइल के साथ ऐसा करने के लिए लिखें यदि इसमें मौजूदा तर्क हैं।
// we use the older file i/o operations for this rather than the newer jdk7+ Files.move() operation
private boolean moveFileToDirectory(File sourceFile, String targetPath) {
File tDir = new File(targetPath);
if (tDir.exists()) {
String newFilePath = targetPath+File.separator+sourceFile.getName();
File movedFile = new File(newFilePath);
if (movedFile.exists())
movedFile.delete();
return sourceFile.renameTo(new File(newFilePath));
} else {
LOG.warn("unable to move file "+sourceFile.getName()+" to directory "+targetPath+" -> target directory does not exist");
return false;
}
}
कृपया यह प्रयास करें।
private boolean filemovetoanotherfolder(String sourcefolder, String destinationfolder, String filename) {
boolean ismove = false;
InputStream inStream = null;
OutputStream outStream = null;
try {
File afile = new File(sourcefolder + filename);
File bfile = new File(destinationfolder + filename);
inStream = new FileInputStream(afile);
outStream = new FileOutputStream(bfile);
byte[] buffer = new byte[1024 * 4];
int length;
// copy the file content in bytes
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
// delete the original file
afile.delete();
ismove = true;
System.out.println("File is copied successful!");
} catch (IOException e) {
e.printStackTrace();
}finally{
inStream.close();
outStream.close();
}
return ismove;
}
close
निर्देश एक finally
ब्लॉक में थे , या यदि यह एक कोशिश के साथ-संसाधन ब्लॉक का उपयोग करता है।
आप यह कोशिश कर सकते हैं .. साफ समाधान
Files.move(source, target, REPLACE_EXISTING);
javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: REPLACE_EXISTING