मेरा छोटा उपयोगिता एप्लिकेशन उपयोगकर्ता को एक GUI फ़ाइल चयनकर्ता के माध्यम से आउटपुट निर्देशिका के लिए पूछता है। फिर कुछ प्रसंस्करण के बाद यह आउटपुट निर्देशिका में बहुत सी फाइलें बनाता है।इसके अंदर फ़ाइलों को बनाने से पहले किसी निर्देशिका में लेखन पहुंच की जांच
मैं अगर आवेदन लिखने इतना है कि यह उपयोगकर्ता को सूचित है और प्रसंस्करण के साथ जारी रखने के लिए नहीं करता है (एक लंबा समय लग सकता है) की जांच की आवश्यकता
मेरा पहला प्रयास था canWrite()java.io.File की विधि। लेकिन यह काम नहीं करता है क्योंकि यह निर्देशिका प्रविष्टि से संबंधित है और इसकी सामग्री नहीं है। मैंने कम से कम को Windows XP फ़ोल्डर का एक उदाहरण देखा है जिसका नाम बदला जा सकता है या हटाया जा सकता है लेकिन इसमें कोई भी फ़ाइल बनाई जा सकती है (अनुमतियों के कारण)। यह वास्तव में मेरा टेस्टकेस है।
मैं अंत में निम्नलिखित समाधान
//User places the input file in a directory and selects it from the GUI
//All output files will be created in the directory that contains the input file
File fileBrowse = chooser.getSelectedFile(); //chooser is a JFileChooser
File sample = new File(fileBrowse.getParent(),"empty.txt");
try
{
/*
* Create and delete a dummy file in order to check file permissions. Maybe
* there is a safer way for this check.
*/
sample.createNewFile();
sample.delete();
}
catch(IOException e)
{
//Error message shown to user. Operation is aborted
}
साथ बसे हालांकि यह मेरे लिए सुरुचिपूर्ण महसूस नहीं करता है के बाद से यह सिर्फ वास्तव में एक फ़ाइल और चेक बनाने के लिए अगर आपरेशन सफल होता है की कोशिश करता है।
मुझे संदेह है कि इसके लिए एक बेहतर तरीका होना चाहिए, लेकिन सुरक्षा समाधान के साथ अब तक सभी समाधान पाए गए हैं और जावा एप्लेट्स के साथ सामान सौदा है और स्टैंडअलोन अनुप्रयोग नहीं हैं। क्या मुझे कुछ याद आ रही है?
वास्तव में फ़ाइलों को लिखने से पहले किसी निर्देशिका के अंदर फ़ाइल पहुंच की जांच करने का अनुशंसित तरीका क्या है?
मैं जावा 5. उपयोग कर रहा हूँ
क्या होगा यदि "blank.txt" पहले से मौजूद है? फिर आप एक फ़ाइल को हटाना बंद कर देते हैं जो महत्वपूर्ण हो सकता है। –
हां यह सबसे अच्छा होगा अगर बूलियन createNewFile() द्वारा लौटाया गया था, यह समझने के लिए उपयोग किया गया था कि फ़ाइल वास्तव में नहीं बनाई गई थी या नहीं। – kazanaki