मैं जावा में एक प्रोग्राम लिख रहा हूं जो कई प्रकार के आफ्टरस्कूल क्लब (ईजी फुटबॉल, हॉकी - उपयोगकर्ता द्वारा दर्ज) प्रदर्शित करता है। क्लब निम्नलिखित ArrayList
में जोड़े जाते हैं:जावा - मैं अपनी ArrayList को एक फ़ाइल में कैसे लिख सकता हूं, और उस फ़ाइल को मूल ArrayList पर पढ़ें (लोड)?
private ArrayList<Club> clubs = new ArrayList<Club>();
followng विधि द्वारा:
public void addClub(String clubName) {
Club club = findClub(clubName);
if (club == null)
clubs.add(new Club(clubName));
}
'क्लब' के साथ एक निर्माता एक वर्ग है - नाम:
public class Club {
private String name;
public Club(String name) {
this.name = name;
}
//There are more methods in my program but don't affect my query..
}
मेरे कार्यक्रम काम कर रहा है - यह मुझे मेरी सरणी सूची में एक नया क्लब ऑब्जेक्ट जोड़ने देता है, मैं सरणी सूची देख सकता हूं, और मैं जो भी चाहता हूं उसे हटा सकता हूं
हालांकि, अब मैं उस सरणीसूची (क्लब) को एक फ़ाइल में सहेजना चाहता हूं, और फिर मैं फ़ाइल को बाद में लोड करने में सक्षम होना चाहता हूं और उसी सरणीसूची फिर से है।
मेरे पास इसके लिए दो तरीके हैं (नीचे देखें), और इसे काम करने की कोशिश कर रहे हैं, लेकिन किसी भी मदद या सलाह की सराहना की जाएगी।
सहेजें विधि (fileName उपयोगकर्ता द्वारा चुना जाता है)
public void save(String fileName) throws FileNotFoundException {
String tmp = clubs.toString();
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
pw.write(tmp);
pw.close();
}
लोड विधि (वर्तमान कोड अभ्यस्त चलाने - फ़ाइल एक स्ट्रिंग है लेकिन क्लब होने की जरूरत है
public void load(String fileName) throws FileNotFoundException {
FileInputStream fileIn = new FileInputStream(fileName);
Scanner scan = new Scanner(fileIn);
String loadedClubs = scan.next();
clubs.add(loadedClubs);
}
मैं भी एक का उपयोग कर रहा हूँ? एप्लिकेशन चलाने के लिए जीयूआई, और फिलहाल, मैं अपने सेव बटन पर क्लिक कर सकता हूं जो मुझे एक नाम और स्थान टाइप करने और इसे सहेजने की अनुमति देता है। फ़ाइल दिखाई देती है और नोटपैड में खोला जा सकता है लेकिन क्लब @ c5d8jdj जैसे कुछ के रूप में प्रदर्शित होता है (मेरी सूची में प्रत्येक क्लब के लिए)
,210
आप क्या देख रहे हैं 'क्लब @ c5d8jdj' ऑब्जेक्ट क्लास' 'toString() 'विधि का परिणाम है। आप सूची में सूची को कैसे सहेजना चाहेंगे? क्या प्रारूप? –
toString() फ़ाइल में लिखने के लिए उपयुक्त नहीं है। आप सीरियलाइजेशन चाहते हैं। – Aurand
यदि आप इसे इस तरह से करना चाहते हैं, तो आपको क्लब() कक्षा की toString() विधि को ओवरराइड करना होगा ताकि इसमें सभी जानकारी हो और फिर एक निर्माता, जो ऑब्जेक्ट को फिर से बनाने में सक्षम हो। या Serializable इंटरफ़ेस और ऑब्जेक्टस्ट्रीम पर एक नज़र डालें: http://docs.oracle.com/javase/tutorial/essential/io/objectstreams.html – NeplatnyUdaj