@kon_! Δημοσ. 28 Μαΐου 2011 Δημοσ. 28 Μαΐου 2011 Καλησπέρα παίδες. Έχω κάποια προβλήματα με ένα πρόγραμμα που κάνω στην Java και ελπίζω να βοηθήσετε όσο και όσοι μπορείτε. Εχω ένα αρχείο .txt έστω a.txt και θέλω να κάνω το εξής: Να διαβάζω το αρχείο σειρά σειρά και όποτε βλέπω .A στην αρχή της σειράς να αποθηκεύω αυτά που βρίσκονται στην επόμενη σειρά σε ένα άλλο αρχείο .txt που έχει όνομα τον αριθμό που βρίσκεται δίπλα στο .Α Για παράδειγμα ένα αρχείο a.txt έχει την μορφή: .Α 1 .Β I like Java a lot .A 2 .B Java is my life Θα πρέπει δηλαδή να δημιουργηθούν 2 αρχεία με ονόματα 1.txt και 2.txt με περιεχόμενο .Β I like Java a lot και .B Java is my life αντίστοιχα.Έχει κανείς καμία ιδέα για το πώς γίνεται; Έχω κάνει τα εξής: > FileReader fr = new FileReader("a.txt"); FileWriter fw = new FileWriter("b.txt"); BufferedReader reader = new BufferedReader(fr); BufferedWriter writer = new BufferedWriter(fw); String text = null; text = reader.readLine(); while((text)!=null) { if(text.startsWith(".B")){ writer.write(text); } writer.newLine(); text=reader.readLine(); } reader.close(); writer.close(); }catch (Exception ex){ System.out.println(ex); } Το πρόβλημα είναι ότι πάει και μου αποθηκεύει σε ένα αρχείο με όνομα b.txt(γιατί δεν ξέρω πώς να το κάνω με το ζητούμενο όνομα που ανέφερα παραπάνω) τα εξής: .B .B .B κ.λ.π.
djcat Δημοσ. 29 Μαΐου 2011 Δημοσ. 29 Μαΐου 2011 Αφού b.txt ονόμασες το αρχείο που γράφεις. Ή κάνε rename to αρχείο ή ονόμασε το αφού διαβάσεις από μέσα πρώτα το όνομα που θες να δώσεις. Τι πιο απλό;
@kon_! Δημοσ. 29 Μαΐου 2011 Μέλος Δημοσ. 29 Μαΐου 2011 @djcat Ευχαριστώ για την απάντηση φίλε.Το ζήτημα όμως είναι το εξής. Αν δίνει το όνομα μέσα πώς μπορεί να αλλάζει κάθε φορά που διαβάζει διαφορετικό .Α και πώς θα το αποθηκεύει με διαφορετικά περιεχόμενα;
djcat Δημοσ. 29 Μαΐου 2011 Δημοσ. 29 Μαΐου 2011 Αν κατάλαβα καλά αυτό που ρωτάς. Η java δεν είναι C. Ορίζεις τα αντικείμενα σου εκεί που τα χρειάζεσαι. Το new θα σου δώσει νέο αντικείμενο.
@kon_! Δημοσ. 29 Μαΐου 2011 Μέλος Δημοσ. 29 Μαΐου 2011 Δεν χρειάζομαι καινούριο αντικείμενο αλλά καινούριο αρχείο.Θέλεις να μου δείξεις με κώδικα πώς περίπου εννοείς ότι μπορεί να γίνει αυτό που ζητάω;
djcat Δημοσ. 29 Μαΐου 2011 Δημοσ. 29 Μαΐου 2011 Ο κώδικας που έχεις βάλει, ξέρεις τι κάνει; Μόνος σου τον έφτιαξες;
@kon_! Δημοσ. 29 Μαΐου 2011 Μέλος Δημοσ. 29 Μαΐου 2011 Μόνος μου τον έχω κάνει και προφανώς ξέρω τι κάνει.Τον παραθέτω με σχόλια: > FileReader fr = new FileReader("a.txt"); // Άνοιγμα αρχείου FileWriter fw = new FileWriter("b.txt"); // Αποθήκευση σε αρχείο BufferedReader reader = new BufferedReader(fr); BufferedWriter writer = new BufferedWriter(fw); String text = null; // δήλωση string με τιμή null text = reader.readLine(); // το text παίρνει την τιμή της γραμμής που διαβάζει ο reader από το αρχείο while((text)!=null) { // όσο το text είναι διάφορο του null δηλαδή δεν έχει τελειώσει το κείμενο του αρχείου if(text.startsWith(".B")){ // αν η γραμμή ξεκινά με .B writer.write(text); // πάνε και γράψε το text μέσα στο αρχείο του writer } writer.newLine(); // άφησε κενή γραμμή στο αρχείο αποθήκευσης text=reader.readLine(); // το text παίρνει την τιμή της γραμμής που διαβάζει ο reader από το αρχείο } reader.close(); // κλείσιμο του reader writer.close(); // κλείσιμο του writer }catch (Exception ex){ // "πιάσε" τα exception System.out.println(ex); // εμφάνιση exception }
παπι Δημοσ. 29 Μαΐου 2011 Δημοσ. 29 Μαΐου 2011 > FileReader fr = new FileReader("a.txt"); FileWriter fw = new FileWriter("b.txt"); BufferedReader reader = new BufferedReader(fr); BufferedWriter writer = new BufferedWriter(fw); String text = null; text = reader.readLine(); while((text)!=null) { if(text.startsWith(".B")){ writer.write(text);//<-- Βαλε ενα breakpoint και δες τι εχει το text } writer.newLine(); text=reader.readLine(); } reader.close(); writer.close(); }catch (Exception ex){ System.out.println(ex); }
djcat Δημοσ. 29 Μαΐου 2011 Δημοσ. 29 Μαΐου 2011 Φτιάχνε ένα νέο fw κάθε φορά που είναι να αλλάξεις αρχείο. Το αρχείο αντιπρoσωπεύεται από το αντικείμενο fw. Μόνο μην ξεχνάς να τα κλείνεις.
@kon_! Δημοσ. 29 Μαΐου 2011 Μέλος Δημοσ. 29 Μαΐου 2011 Θα δοκιμάσω διάφορα πράγματα που έχω στο μυαλό μου + αυτά που μου είπατε και θα ενημερώσω στο topic την λύση ή τυχόν απορίες που θα προκύψουν. Σας ευχαριστώ για την έως τώρα βοήθεια.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.