Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

Îåêßíçóå áðü ôï ìÝëïò Valxalas. Τελευταία δημοσίευση από το μέλος Thiseas στις 09-06-2007, 17:50. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  08-06-2007, 21:24 32787

    Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

    Σε προηγούμενη δημοσίευση (με θεμα ΜΠΟΡΩ ΝΑ ΔΙΑΓΡΑΨΩ ΤΗΝ ΠΡΩΤΗ ΓΡΑΜΜΗ ΑΠΟ TXT) ο φίλος Γιώργος Μπακογιάννης με βοήθησε πάρα πολύ προσφέροντας μου το παρακάτω

     

    public static bool DeleteTheFirstLineOfFile(string inFileName, string outFileName) {
                if (!File.Exists(inFileName)) {
                    Console.WriteLine("{0} does not exist.", inFileName);
                    return false;
                }
                if (File.Exists(outFileName)) {
                    Console.WriteLine("{0} does exist.", inFileName);
                    return false;
                }
                int line = 0;
                using (StreamReader sr = new StreamReader(inFileName, Encoding.Default))
                using (StreamWriter sw = new StreamWriter(outFileName, true, Encoding.Default)) {
                    string input;
                    while ((input = sr.ReadLine()) != null) {
                        if (++line == 1) continue;
                        sw.WriteLine(input);
                        Console.WriteLine(input);
                    }
                    sr.Close();
                    Console.WriteLine();
                    Console.WriteLine("Total lines: {0}", line);
                }
                return true;
            }

     

     

    αν θέλω να  διαγράψω την τελευταία γραμμή τι αλλαγή πρέπει να κάνω στο παρακάτω:  

     

    while ((input = sr.ReadLine()) != null) {
                        if (++line == 1) continue;
                        sw.WriteLine(input);
                        Console.WriteLine(input);

    επίσης πως μπορώ να διαβάζω τις τελευταίες γραμμές και να σβήσω τις κενές??

     

  •  08-06-2007, 22:18 32788 σε απάντηση της 32787

    Απ: Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

    Ανέκαθεν προβληματιζόμουνα με το γεγονός: "Μέχρι πόσο πρέπει να βοηθάμε κάποιον?"

    1ον. Να του τα προσφέρουμε όλα έτοιμα και να σπεύδουμε να απαντάμε σε οποιοδήποτε ερώτημα?

    2ον. Να μην απαντάμε τίποτε παρά μόνο, οτι νομίζουμε οτι αξίζει τον κόπο με βάση την εμπειρία μας?

    Νομίζω οτι η αλήθεια είναι κάπου στη μέση. Να απαντάμε εφόσων το ερώτημα είναι σαφές καθώς επίσης δείχνει οτι αυτός που ρωτάει έχει προβληματιστεί αρκετά επάνω στο θέμα.... και δεν θέλει να πάρει μια έτοιμη απάντηση π.χ. για λύσει τις ασκήσεις του φροντιστηρίου του.

    Προσοχή!! Δεν λέω οτι κάνεις αυτό το πράγμα.... απλά οι ερώτηση σου είναι απίστευτα αστεία με την έννοια οτι ο Γιώργος σου απάντησε ήδη. Δεν σου απάντησε όμως για να λύσει το συγκεκριμένο σου πρόβλημα, αλλά για να χρησιμοποιήσεις το κομμάτι του μυαλού σου που λέγεται "Ανάλυση" και "Σύνθεση" καθώς και λίγο, πολύ λίγο "Αναζήτηση" και να λύσεις προβλήματα που είναι ίδια ή μοιάζουν με το παραπάνω.

    Αν δεν θέλεις ή δεν μπορείς να το κάνεις αυτό .... τότε δεν νομίζω οτι αξίζει να απαντήσω.

    Τώρα θα μου πείς... "Ξέρεις βιάζομαι!!! Δεν μπορώ να περιμένω κλπ κλπ!!"
    Θα σου απαντήσω..... "Sorry.... its your problem."

    Προτείνω να ξεκινήσεις με ένα βιβλίο περι των βασικών αρχών προγραμματισμού.


    Nothing to declare...
  •  09-06-2007, 07:31 32794 σε απάντηση της 32787

    Απ: Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

    Thiseas δε διαφωνώ. Άλλα μην είμαστε τόσο σκληροί.

    Μακάρι να είχα και εγώ ένα τέτοιο forum και internet όταν ξεκίνησα.

    Ένας από τους δύο μου κουμπάρους (ήμασταν συγκάτοικοι... στη τρέλα) που είπα μια μέρα να αγοράσει ένα Η/Υ. Η απάντηση του ήταν:

     

    Τι να τον κάνω εγώ; Smile

     

    Στο τέλος τον έπεισα και αγόρασε έναν.

    Επειδή κατά τι διάρκεια της εκμαθήσεις του είχε την απάντηση άμεσα, τώρα είναι εργαλείο της δουλεία του και δε μπορεί να κάνει χωρίς αυτό.

    Από τη άλλη μεριά ο άλλος μου κουμπάρος (ήμαστε έξαλλου στην εποχή της κουμπαριάς) πήγαινε στο καθηγητή του (πολύ γνωστός για τα μεγάλα έργα που έχει κάνει) και του ζητούσε βοήθεια και κάθε φορά η απάντηση ήταν: Σκέψου.

    Αυτά τα δύο δεν άκρως αντίθετα;

     

    Τώρα Valxalas  σου έχω κώδικα και ένα bug, να το δω θα το βρεις;

     

     

        public enum Action
        {
            DeleteTheFirstLine,
            DeleteEmptyLines,
            DeleteTheLastLine,
            ReadLastLines
        }

        public class TextFileProcessor
        {
            readonly bool deleteEmptyLines, deleteTheFirstLine, deleteTheLastLine;
            readonly string inFileName;
            readonly ICollection<string> lines = new Collection<string>();
            readonly string outFileName;
            readonly bool readLastLines;
            readonly bool showLinesInConsole;
            string line;
            int lineNumber;
            int? linesCount = null;
            int numberOfLines;

            public TextFileProcessor(string inFileName, string outFileName, ICollection<Action> actions, bool showLinesInConsole) {
                if (actions == null) throw new ArgumentNullException("actions");
                this.inFileName = inFileName;
                this.outFileName = outFileName;
                this.showLinesInConsole = showLinesInConsole;
                deleteEmptyLines = actions.Contains(Action.DeleteEmptyLines);
                deleteTheFirstLine = actions.Contains(Action.DeleteEmptyLines);
                deleteTheLastLine = actions.Contains(Action.DeleteTheLastLine);
                readLastLines = actions.Contains(Action.ReadLastLines);
            }

            void Init() {
                if (!File.Exists(inFileName)) throw new OperationCanceledException(string.Format(CultureInfo.CurrentCulture, "{0} does not exist.", inFileName));
                if (File.Exists(outFileName)) throw new OperationCanceledException(string.Format(CultureInfo.CurrentCulture, "{0} does exist.", outFileName));
                if (deleteTheLastLine || readLastLines) linesCount = CountLines();
                if (readLastLines) lines.Clear();
            }

            public void DeleteActions() {
                Init();
                Processor();
            }

            public ICollection<string> ReadLastLines(int numberOfLines) {
                this.numberOfLines = numberOfLines;
                Init();
                Processor();
                return lines;
            }

            void Processor() {
                lineNumber = 0;
                using (StreamReader sr = new StreamReader(inFileName, Encoding.Default))
                using (StreamWriter sw = new StreamWriter(outFileName, true, Encoding.Default)) {
                    while ((line = sr.ReadLine()) != null) {
                        if (deleteEmptyLines && string.IsNullOrEmpty(line)) continue;
                        if (deleteTheFirstLine && ++lineNumber == 1) continue;
                        if (deleteTheLastLine && linesCount.HasValue && linesCount.Value == lineNumber) continue;
                        if (readLastLines && linesCount.HasValue && (linesCount.Value - numberOfLines) == lineNumber) lines.Add(line);
                        sw.WriteLine(line);
                        if (showLinesInConsole) Console.WriteLine(line);
                    }
                    sr.Close();
                    if (showLinesInConsole) Console.WriteLine(Environment.NewLine + "Total lines: {0}", lineNumber);
                }
            }

            int CountLines() {
                lineNumber = 0;
                using (StreamReader sr = new StreamReader(inFileName, Encoding.Default)) {
                    while ((line = sr.ReadLine()) != null) {
                        if (deleteEmptyLines && string.IsNullOrEmpty(line)) continue;
                        lineNumber++;
                    }
                }
                return lineNumber;
            }
        }

     


    while (!dead) learn();
  •  09-06-2007, 09:46 32795 σε απάντηση της 32794

    Απ: Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

    lol... Γιώργο... Big Smile,.... Δεν είμαι και τόσο σκληρός βρε Γιώργο,... Stick out tongue...

    Άλλοστε,... αν κοιτάξεις πίσω από τις 2 προηγούμενες απαντήσεις μας, θα έλεγα οτι έχουν την ίδια φιλοσοφία.


    Nothing to declare...
  •  09-06-2007, 10:32 32796 σε απάντηση της 32795

    Απ: Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

    Χαλαρά... Smile


    while (!dead) learn();
  •  09-06-2007, 12:32 32797 σε απάντηση της 32796

    Απ: Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

    Εχουμε πολλές φορές επέμβει (ως moderators) σε περιπτώσεις οπου ερωτήσεις φαίνονται να αποτελούν την "εύκολη λύση", ειδικά όταν αυτές αφορούν θέματα ασκήσεων / εργασιών για σχολές.

    Ομως, το γνωστικό επίπεδο του κάθε συναδέλφου διαφέρει. Είμαστε λίγο "χαλαροί" σε αυτό το θέμα, ακόμα και αν είναι πασιφανές οτι η απάντηση στην ερώτηση μπορεί να δοθεί από τον ίδιο τον ερωτώντα αν το "ψάξει" λίγο παραπάνω, όταν η ερώτηση αυτή γίνεται στα "πρώτα βήματα". Πολλές φορές ο ερωτών νοιώθει μπερδεμένος, ή δεν μπορεί να εντοπίσει ακριβώς τη λύση του προβλήματός του, ακριβώς επειδή κάνει τα "πρώτα του βήματα".

    Δεν λέω οτι η προσέγγιση αυτή ειναι απαραίτητα η σωστότερη, όμως είναι μια προσέγγιση. Απλά την αναφέρω για να γνωρίζουν οι συνάδελφοι το πώς αντιμετωπίζουμε παρόμοιες καταστάσεις.

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  09-06-2007, 13:37 32799 σε απάντηση της 32797

    Απ: Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

    Συμφωνώ με τον cap αλλά θέλω να προσθέσω ότι κάποιος ο οποίος είναι ειδικός σε ένα θέμα, άνετα μπορεί να είναι στα "πρώτα βήματα" σε ένα άλλο. Προσωπικά δεν έχω καμμία όρεξη να βοηθήσω κάποιο φοιτητή να "κλέψει" στο μάθημα ή την εργασία που του αναθέσανε. Πολλοί είναι όμως και αυτοί οι οποίοι δεν έχουν ασχοληθεί ξανά με ένα τομέα και απλά μπερδεύονται, όπως επισημαίνει και ο cap. Άλλοτε μπορεί να έχουν καταλάβει λάθος ένα θέμα, άλλοτε να αναφέρουν ελλειπή στοιχεία. Σε όλες θα προσπαθήσουμε να απαντήσουμε, ακόμα και αν μερικές φορές η απάντηση είναι "πρέπει να ξεκινήσεις από τα βασικά, κοίτα τα links α, β, γ, δ", ή "όπως θα δεις και στο documentation, στο link αβγ, αυτό γίνεται έτσι-κι-έτσι-κι-έτσι".

    Αν το σκεφτεί κανείς, όσο πιο προχωρημένος είναι κανείς, τόσο περισσότερο ψάχνει σε documentation, τόσο πιο σαφείς ερωτήσεις κάνει, τόσο λιγότερο αγκυλώνεται σε εσφαλμένες ιδέες. Είναι και αυτό κάτι που μαθαίνεις με την πείρα.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  09-06-2007, 17:50 32801 σε απάντηση της 32799

    Απ: Βοηθεια στην ανάγνωση και διαγραφή ενός txt αρχείου

    Παναγιώτης Καναβός:
    Συμφωνώ με τον cap αλλά θέλω να προσθέσω ότι κάποιος ο οποίος είναι ειδικός σε ένα θέμα, άνετα μπορεί να είναι στα "πρώτα βήματα" σε ένα άλλο.

    Ασφαλώς!!! Φυσικά και ισχύει αυτό για όλους μας.... 
    Προσωπικά πιστευω οτι δεν γνωρίζω καθόλου καλά (σε σχέση με τους περισσότερους εδώ, τις νέες τεχνολογίες τις Microsoft).... και εκεί που φαίνεται να "παρατηρώ" κάποιον για μια αφηρημένη απάντηση θα παρατηρηθώ για κάτι αντίστοιχο σε ένα άλλο τομέα...

    Έτσι είναι αυτά...
    Γηράσκω αεί διδασκόμενος.... και όπως είχε πεί πολύ σοφά κι ο "Ναυαρχούκος":
    Το κακό δεν είναι που διαδάσκομαι, αλλά που.... γηράσκω... Sad 

    Έλα... έλα.. ν' ανεβαίνουμε!!


    Nothing to declare...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems