पर एक प्रोग्राम है जिसे हमने एक निर्देशिका से दूसरी निर्देशिका में फ़ाइलों को स्थानांतरित करने का प्रयास करते समय मिटा दिया है। बहुत डीबगिंग के बाद मैंने एक छोटी उपयोगिता प्रोग्राम लिखकर त्रुटि दर्ज की जो सिर्फ एक निर्देशिका से दूसरी निर्देशिका में एक फ़ाइल ले जाती है (नीचे कोड)। यह पता चला है कि स्थानीय फाइल सिस्टम पर फ़ाइलों को स्थानांतरित करते समय ठीक काम करता है, फ़ाइल को किसी अन्य फाइल सिस्टम में स्थानांतरित करने का प्रयास विफल रहता है।जावा फ़ाइल को स्थानांतरित करने में विफल रहता है जब परिणामस्वरूप फ़ाइल किसी अन्य फाइल सिस्टम
यह क्यों है? सवाल मंच विशिष्ट हो सकता है - यदि यह मायने रखता है, तो हम ext3 पर लिनक्स चला रहे हैं।
और दूसरा प्रश्न; क्या मुझे कक्षा के renameTo()
विधि से कुछ और उपयोग करना चाहिए? ऐसा लगता है जैसे यह स्थानीय फाइल सिस्टम पर काम करता है।
टेस्ट (रूट के रूप में चलाने):
touch /tmp/test/afile
java FileMover /tmp/test/afile /root/
The file move was successful
touch /tmp/test/afile
java FileMover /tmp/test/afile /some_other_disk/
The file move was erroneous
कोड:
import java.io.File;
public class FileMover {
public static void main(String arguments[]) throws Exception {
boolean success;
File file = new File(arguments[0]);
File destinationDir = new File(arguments[1]);
File destinationFile = new File(destinationDir,file.getName());
success = file.renameTo(destinationFile);
System.out.println("The file move was " + (success?"successful":"erroneous"));
}
}
है Errr ... फ्लॉप आपका जवाब है, जबकि लोड है मैंने मेरा बना लिया :), moveFile उद्धारकर्ता +1 है – mprabhat
अपाचे कॉमन्स पर आपका सुझाव बिल्कुल मेरा अगला कदम था। एक सूचनात्मक उत्तर के लिए धन्यवाद जो वास्तव में दोनों सवालों का जवाब देता है! – oligofren
ऊपर दिए गए उत्कृष्ट उत्तर में जोड़ने के लिए, सिस्टम कॉल को रीडेनिंग में उपयोग किया जाता है EXDEV यदि पुरानापाथ और न्यूपाथ उसी आरोहित फ़ाइल सिस्टम पर नहीं है। असल में प्रोग्राम "एमवी" इस स्थिति को एक स्पष्ट प्रतिलिपि करके ऑपरेशन हटाकर संभालता है। – ghostkadost