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

 

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

File.WriteAllText vs TextWriter

Îåêßíçóå áðü ôï ìÝëïò dimos.homatas. Τελευταία δημοσίευση από το μέλος dimos.homatas στις 03-02-2011, 12:27. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-02-2011, 11:24 62983

    File.WriteAllText vs TextWriter

    Υπάρχει καμία ουσιώδης διαφορά μεταξύ των δύο τρόπων; Πέρα από την ευκολία του File. Έχω την εντύπωση ότι το File είναι απλά ένας static wrapper για τα Stream objects. Εάν υπάρχει κάποια διαφορά στην υλοποίηση/ταχύτητα/resources/whatever, θα ήθελα να το ξέρω.
    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
  •  03-02-2011, 11:30 62985 σε απάντηση της 62983

    Απ: File.WriteAllText vs TextWriter

    Όντως είναι wrapper. Δουλεύοντας όμως με streams μπορείς να ορίσεις πράγματα όπως το μέγεθος του buffering ή του batch τα οποία είναι hard-coded στην File
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  03-02-2011, 11:57 62988 σε απάντηση της 62985

    Απ: File.WriteAllText vs TextWriter

    Thanks. Έχω την εντύπωση βέβαια ότι δεν θα ήταν μπελάς να υπάρχει κάποιος αλγόριθμος μέσα στο File που να ορίζει το μέγεθος του buffer δυναμικά (ανάλογα με το length των data φαντάζομαι).

    Ευχαριστώ!

    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
  •  03-02-2011, 12:05 62990 σε απάντηση της 62988

    Απ: File.WriteAllText vs TextWriter

    Αυτό δεν έχει νόημα γιατί το buffer που χρειάζεσαι έχει να κάνει με το είδος και την ταχύτητα του αποθηκευτικού μέσου (όσο γρηγορότερο, τόσο μικρότερο buffer), το latency (κι αν σώζεις σε network share?), το μέγεθος των batches, το είδος της εργασίας (αν κάνεις file-copy δεν βολεύουν τα πολύ μεγάλα buffer) και όχι το μέγεθος του αρχείου. Είχα κοιτάξει κάποια στιγμή με Reflector τί κάνει η WriteAllText και θυμάμαι ότι δεν ήταν απλό textstream αλλά δεν θυμάμαι πλέον τί είχε μέσα.

    Ουπς, άκυρο. Μόλις κοίταξα και είναι το εξής:
    public static void WriteAllText(string path, string contents, Encoding encoding)
    {
        using (StreamWriter writer = new StreamWriter(path, false, encoding))
        {
            writer.Write(contents);
        }
    }
    
     
    Οπότε μιλάμε όντως για ένα απλό wrapper

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  03-02-2011, 12:27 62992 σε απάντηση της 62990

    Απ: File.WriteAllText vs TextWriter

    Σίγουρα είναι πολυπαραγοντικό το θέμα της επιλογής του μήκους του buffer, αλλά νομίζω ότι η λογική είναι ίδια και με τοn ορισμό των μεγεθών των clusters σε ένα filesystem. Μεγάλο μέγεθος cluster για μεγάλα αρχεία, μικρό μέγεθος cluster για μικρά αρχεία και εξοικονόμηση χώρου.

    Θέλω να πω: Αν έχεις 1000 bytes και το buffer size είναι 100, τώρα θα κάνει 10 write. Αν το buffer size είναι 1000 θα κάνει 1.

    Όπως και νά'χει, και όπως είπες, το μέγεθος του buffer τελικά είναι το default του StreamWriter (μπορεί και του Stream).

    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems