यह कोड पहले निर्देशिका के अस्तित्व के लिए जाँच करता है और यदि नहीं, तो बनाता है और बाद में फ़ाइल बनाता है। कृपया ध्यान दें कि मैं आपकी कुछ विधि कॉलों को सत्यापित नहीं कर सका क्योंकि मेरे पास आपका पूरा कोड नहीं है, इसलिए मैं कॉल को चीजों की तरह मान रहा हूं getTimeStamp()
और getClassName()
काम करेगा। आपको किसी भी संभव के साथ कुछ करना चाहिए जिसे IOException
किसी भी java.io.*
वर्ग का उपयोग करते समय फेंक दिया जा सकता है - या तो आपका फ़ंक्शन जो फाइलें लिखता है उसे इस अपवाद को फेंक देना चाहिए (और इसे कहीं और संभाला जाना चाहिए), या आपको इसे सीधे विधि में करना चाहिए। इसके अलावा, मैंने माना कि id
यह प्रकार का है String
- मुझे नहीं पता कि आपका कोड इसे स्पष्ट रूप से परिभाषित नहीं करता है। अगर यह कुछ और की तरह है int
, तो आपको इसे String
फ़ाइलनाम में उपयोग करने से पहले इसे कास्ट करना चाहिए जैसा कि मैंने यहां किया है।
साथ ही, मैंने आपके append
कॉल को उचित रूप में concat
या उसके साथ बदल दिया +
।
public void writeFile(String value){
String PATH = "/remote/dir/server/";
String directoryName = PATH.concat(this.getClassName());
String fileName = id + getTimeStamp() + ".txt";
File directory = new File(directoryName);
if (! directory.exists()){
directory.mkdir();
}
File file = new File(directoryName + "/" + fileName);
try{
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(value);
bw.close();
}
catch (IOException e){
e.printStackTrace();
System.exit(-1);
}
}
यदि आप Microsoft Windows पर कोड चलाना चाहते हैं, तो आपको इस तरह से नंगे पथ नामों का उपयोग नहीं करना चाहिए - मुझे यकीन नहीं है कि यह /
फ़ाइल नाम में क्या करेगा । पूर्ण पोर्टेबिलिटी के लिए, आपको अपने रास्तों के निर्माण के लिए फ़ाइल.सेपरेटर जैसी किसी चीज़ का उपयोग करना चाहिए ।
संपादित करें : नीचे जोसेफस्क्रिप्ट की एक टिप्पणी के अनुसार , निर्देशिका अस्तित्व के लिए परीक्षण करना आवश्यक नहीं है। directory.mkdir()
कॉल वापस आ जाएगी true
अगर यह एक निर्देशिका बनाया है, और false
न ही यह किया था, मामला है जब निर्देशिका पहले से ही अस्तित्व में भी शामिल है।