2013-10-24 10 views
20

से इनकार किया है मैं निम्नलिखित कोड है:पहुँच java.io.FileNotFoundException

List<FileItem> items = uploadHandler.parseRequest(request); 
for (FileItem item : items) { 
    if (!item.isFormField()) { 
     File file = new File("D:/Data"); 
    } 
} 

जब मैं एक फ़ाइल को बचाने के लिए कोशिश कर रहा हूँ, मैं निम्न त्रुटि

java.io.FileNotFoundException: D:\Data (Access is denied.) 

हो रही है कारण क्या हो सकता है और मैं इसे कैसे हल कर सकता हूं? मैंने इस फ़ोल्डर पर अनुमति पढ़ और लिख ली है।

+0

देखते हैं कि क्या निर्देशिका है "डी:/डेटा" पर मौजूद –

+2

मुझे लगता है कि ऐसा इसलिए है क्योंकि आप अपने 'फॉर' लूप के प्रत्येक पुनरावृत्ति पर एक ही फ़ाइल खोलने का प्रयास करते हैं। – Francis

+0

कोड को वास्तव में फ़ाइल को सहेजने वाले कोड को देखे बिना, या कोड के बिना संकलित और पुन: उत्पन्न करने के बिना यह कहना मुश्किल है, लेकिन मुझे लगता है कि फ़ाइल पहले से मौजूद है (या उस नाम के साथ एक निर्देशिका मौजूद है)? साथ ही, ध्यान दें कि विंडोज़ फाइलों पर केस संवेदनशील नहीं है। –

उत्तर

44

जब आप नई फ़ाइल फोन अपने फ़ाइल नाम, न केवल निर्देशिका आप में अपनी फ़ाइल रखना चाहते हैं देने के लिए होता है।

तरह

File file = new File("D:/Data/" + item.getFileName()); 
15

नहीं बिल्कुल के मामले कुछ के साथ प्रयास करें यह सवाल लेकिन सहायक हो सकता है। मैं जब मैं बजाय नई फ़ाइल पर mkdirs() फोन अपने पेरेंट की

File file = new java.io.File(path); 
//file.mkdirs(); // wrong! 
file.getParentFile().mkdirs(); // correct! 
if (!file.exists()) { 
    file.createNewFile(); 
} 
5

आप उपयोगकर्ता नियंत्रण के लिए अनुमति सेट करने की जरूरत है इस अपवाद मिला है।

  1. गोटो C: \ Program Files \
  2. राइट क्लिक करें जावा फ़ोल्डर, गुण क्लिक करें। सुरक्षा टैब का चयन करें।
  3. वहां, "संपादित करें" बटन पर क्लिक करें, जो जावा विंडो के लिए अनुमतियां पॉप अप करेगा।
  4. एड पर क्लिक करें, जो एक नई विंडो पॉप अप करेगा। उसमें, "ऑब्जेक्ट नाम दर्ज करें" बॉक्स में, अपना उपयोगकर्ता खाता नाम दर्ज करें, और ठीक क्लिक करें (यदि पहले से मौजूद है, तो इस चरण को छोड़ दें)।
  5. अब "जावा के अनुमति" विंडो में, आप कई क्लिक करने योग्य क्रिएटर ओवेनर, सिस्टम जैसे विकल्पों को देखेंगे, उनमें से उपयोगकर्ता नाम है। उस पर क्लिक करें, और उप विंडो के लिए अनुमतियों में पूर्ण नियंत्रण विकल्प को चिह्नित करें।
  6. अंत में, लागू करें और ठीक है।
+0

यह जावा निष्पादन योग्य पर अनुमतियों को बदल रहा है। ऐसा करने का कोई कारण नहीं है। –

3

मैं इस समस्या के लिए खोज की है और मैं निम्नलिखित जवाब मिला:

  1. "C:\Program Files\Apache-tomcat-7.0.69\" अतिरिक्त बैकस्लैश को दूर (\)
  2. सही बिल्ला फ़ोल्डर में और सुरक्षा टैब में लॉग फ़ोल्डर क्लिक करें दे इस फ़ोल्डर को लेखन-अनुमति के रूप में और फिर नेट-बीन्स को व्यवस्थापक के रूप में चलाने के रूप में पुनरारंभ करें।

आपकी समस्या को हल किया जा जाएगा

3

सुनिश्चित करें कि निर्देशिका मौजूद है, आप इसे उपयोग और पथ के लिए फ़ाइल जोड़ने के लिए लॉग लिखने की अनुमति बनाओ:

File file = new File("D:/Data/" + item.getFileName()); 
संबंधित मुद्दे