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

 

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

VB 2005 και binary αρχεία

Îåêßíçóå áðü ôï ìÝëïò ef_plhn. Τελευταία δημοσίευση από το μέλος ef_plhn στις 02-10-2007, 14:43. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  01-10-2007, 19:16 35710

    VB 2005 και binary αρχεία

         
          Καλησπέρα. Θα ήθελα να ρωτήσω κάτι το οποίο θα καθορίσει την πορεία ενός project που ετοιμάζω στη Visual Basic 2005. Μπορώ να διαγράψω bytes σε ένα binary αρχείο? Δηλαδή μπορώ να το τροποποιήσω σε συγκεκριμένα σημεία? Διότι έναν τρόπο για να τροποποιήσω ένα binary αρχείο που γνωρίζω είναι να αποθηκεύσω όλα τα δεδομένα σε ένα πίνακα να κάνω τις αλλαγές και να το γράψω απο την αρχή, όπου και πάλι με αυτή τη λύση θα έχω πρόβλημα διότι ένα μεγάλο κομμάτι του αρχείου θα παραμένει πάντα ανέπαφο και ως λύση δεν είναι αποδοτική.

       
          Υ.Γ . Είμαι νέος στη κοινότητα του doNetZone και αν το παραπάνω θέμα δεν είναι σχετικό με το forum για τα WinForms παρακαλώ να μου το επισημάνετε.Smile
  •  02-10-2007, 03:37 35716 σε απάντηση της 35710

    Απ: VB 2005 και binary αρχεία

    Μπορείς να είσαι λίγο πιο συγκεκριμένος; Να διαγράψεις θες, να τροποποιήσεις, και τα δύο; Όταν λες: «θα έχω πρόβλημα διότι ένα μεγάλο κομμάτι του αρχείου θα παραμένει πάντα ανέπαφο» τι εννοείς;


    while (!dead) learn();
  •  02-10-2007, 10:32 35727 σε απάντηση της 35716

    Απ: VB 2005 και binary αρχεία

     Αυτό το οποίο θέλώ να κάνω είναι να παρέμβω σε συγκεκριμένα μέρη του αρχείου και να τροποιήσω μόνο εκείνα. Τώρα αυτό που ρωτάω είναι αν γίνεται να διαγράψω τα δεδομένα που υπάρχουν σε εκείνα τα σημεία και να γράψω τα καινούργια ως ξεχωριστές ενέργειες η κάθε μία. Π.χ θέλω να πάω στη θέση 158  (σε byte) του αρχείου, να διαγράψω τα επόμενα 8 byte και να γράψω 8 byte καινούργιων δεδομένων. Όσο για το δεύτερο σκέλος της ερώτησής σου, το αρχείο που θέλω να τροποποιώ είναι περίπου 400MB. Τώρα σε κάθε φορά που θέλω π.χ να αλλάξω έναν αριθμό μιας αποθηκευμένης εγγραφής ξαναγράφω το αρχείο απο τη αρχή τότε δεν νομίζω οτι θα είναι αποδοτικό.
  •  02-10-2007, 10:56 35730 σε απάντηση της 35727

    Απ: VB 2005 και binary αρχεία

    Μπορείς να τροποποιήσεις οποιοδήποτε σημείο σε ένα αρχείο χρησιμοποιώντας την μέθοδο FileStream.Seek για να πας σε ένα συγκεκριμένο σημείο μέσα στο αρχείο και μετά την Write ή WriteByte για να γράψεις εκεί. Αυτό όμως μόνο για να τροποποιήσεις δεδομένα, δηλαδή να γράψεις πάνω από τα παλιά. Αν θέλεις να εισάγεις ή να διαγράψεις δεδομένα, δεν γλυτώνεις την αντιγραφή. Ο λόγος είναι ότι κατά την εισαγωγή θα πρέπει να μετακινηθούν τα υπάρχοντα δεδομένα μετά το σημείο εισαγωγής για να προστεθούν τα νέα. Αντίστοιχα, κατά την διαγραφή θα πρέπει να μετακινηθούν τα δεδομένα μετά το σημείο διαγραφής για να ελευθερωθεί ο χώρος στο τέλος του αρχείου.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  02-10-2007, 14:43 35746 σε απάντηση της 35730

    Απ: VB 2005 και binary αρχεία

    Ευχαριστώ πολύ Big Smile. Δοκίμασα να κάνω seek και μετά write. Κατάφερα επιτέλους να γράψω τα νέα δεδομένα πάνω από τα παλιά Yes.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems