Suppression d'octet

renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012 - 21 sept. 2007 à 13:33
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 21 sept. 2007 à 19:02
Bonjour,

je voudrais supprimer 500 octet en debut d'un fichier. et sauvegarder le reste dans un autre fichier BinaryReader et Writer  soit mais comment...
Si quelqu'un peut m'aider...

Merci

PS : c'est pour lire les fichier .itc générer par itunes (Artwork album)

reno

2 réponses

renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012
21 sept. 2007 à 14:48
bon ça n'inspire personne j'ai tenter ça mais je pense qu'on peut faire beaucoup mieux...

Dim BR
As
New BinaryReader(
New StreamReader(chemin).BaseStream)BR.BaseStream.Seek(500, SeekOrigin.Begin)

Dim BW
As
New BinaryWriter(File.Open(
"c:\oooo", FileMode.Create))

Dim i
As
Integer

Dim data(0)
As
Byte

Do
While i <> -1i = BR.BaseStream.ReadByte

If i > -1
Thendata.SetValue(

CByte(i), UBound(data))

ReDim
Preserve data(UBound(data) + 1)

End
If

LoopBW.Write(data, 0, data.Length)

Me.PictureBox1.Image = Image.FromStream(bw.basestream)BR.BaseStream.Flush()

BR.Close()

BW.Flush()

BW.Close()

reno
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 sept. 2007 à 19:02
Fichier 1 Mo tu feras 'redim preserve' 1 million de fois, NIET.

size = tailleFichier
if size < nbrToDelete Then Exit
Se positionner dans le fichier à nbrToDelete (seek si j'ai bien compris).
size -= nbrToDelete
Alloc buffer de size octets
read de size octets en 1 seule passe
se positionner au début du fichier
Ecrire les size octets en 1 seul passe
SetEndOfFile (voir comment se fait en VB, aucune idée)

N'y aura  en tout qu'1 seule alloc mémoire, 1 lecture et 1 écriture, pas de boucle.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous