Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lire un fichier binaire d'internet

5 réponses
Avatar
Sylvain MALLEVAL
Bonjour,

pour télécharger un fichier internet et pouvoir afficher l'évolution du
téléchargement, je lit en fait le fichier comme un fichier binaire et je
crée un fichier sur le client
de ce fait, mon algo est tout bete:

tant que PAS fin de fichier
je lis
j'écris
fin tant que

le problème est que je ne sais lire que bit par bit et c'est long. Quelqu'un
pourrait-il changer mon code pour que je lise par paquet de 1000 bit (ou
plus)
je pense que c pas compliqué mais je rame et je trouve pas. Voici mon code:

Dim Uri As New Uri(adresse_du_fichier)
Dim Request As System.Net.WebRequest = Request.Create(Uri)
Dim Response As System.Net.WebResponse = Request.GetResponse
Dim Sr As System.IO.BinaryReader = Nothing
Sr = New System.IO.BinaryReader(Response.GetResponseStream)
Dim Fd As New System.IO.FileStream(Destination, IO.FileMode.Create,
IO.FileAccess.Write, IO.FileShare.None)
Try
While 1 = 1
Fd.WriteByte(Sr.ReadByte)
End While
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing

Merci pour votre aide
Sylvain MALLEVAL

5 réponses

Avatar
Paul Bacelar
Const upperBound As Integer = 1000
Dim dataArray(upperBound) As Byte
Dim lu As Integer = 0

Try
While (lu = Sr.Read(dataArray, 0, dataArray.Length)) dataArray.Length
Fd.Write(dataArray,0, dataArray.Length)
End While
If lu <>0 then
Fd.Write(dataArray,0, lu)
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing


--
Paul Bacelar

"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> wrote in message
news:#
Bonjour,

pour télécharger un fichier internet et pouvoir afficher l'évolution du
téléchargement, je lit en fait le fichier comme un fichier binaire et je
crée un fichier sur le client
de ce fait, mon algo est tout bete:

tant que PAS fin de fichier
je lis
j'écris
fin tant que

le problème est que je ne sais lire que bit par bit et c'est long.


Quelqu'un
pourrait-il changer mon code pour que je lise par paquet de 1000 bit (ou
plus)
je pense que c pas compliqué mais je rame et je trouve pas. Voici mon


code:

Dim Uri As New Uri(adresse_du_fichier)
Dim Request As System.Net.WebRequest = Request.Create(Uri)
Dim Response As System.Net.WebResponse = Request.GetResponse
Dim Sr As System.IO.BinaryReader = Nothing
Sr = New System.IO.BinaryReader(Response.GetResponseStream)
Dim Fd As New System.IO.FileStream(Destination,


IO.FileMode.Create,
IO.FileAccess.Write, IO.FileShare.None)
Try
While 1 = 1
Fd.WriteByte(Sr.ReadByte)
End While
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing

Merci pour votre aide
Sylvain MALLEVAL




Avatar
Sylvain MALLEVAL
Super, merci beaucoup...

"Paul Bacelar" a écrit dans le message
de news: O4H4$
Const upperBound As Integer = 1000
Dim dataArray(upperBound) As Byte
Dim lu As Integer = 0

Try
While (lu = Sr.Read(dataArray, 0, dataArray.Length)) > dataArray.Length
Fd.Write(dataArray,0, dataArray.Length)
End While
If lu <>0 then
Fd.Write(dataArray,0, lu)
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing


--
Paul Bacelar

"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> wrote in message
news:#
Bonjour,

pour télécharger un fichier internet et pouvoir afficher l'évolution du
téléchargement, je lit en fait le fichier comme un fichier binaire et je
crée un fichier sur le client
de ce fait, mon algo est tout bete:

tant que PAS fin de fichier
je lis
j'écris
fin tant que

le problème est que je ne sais lire que bit par bit et c'est long.


Quelqu'un
pourrait-il changer mon code pour que je lise par paquet de 1000 bit (ou
plus)
je pense que c pas compliqué mais je rame et je trouve pas. Voici mon


code:

Dim Uri As New Uri(adresse_du_fichier)
Dim Request As System.Net.WebRequest = Request.Create(Uri)
Dim Response As System.Net.WebResponse = Request.GetResponse
Dim Sr As System.IO.BinaryReader = Nothing
Sr = New System.IO.BinaryReader(Response.GetResponseStream)
Dim Fd As New System.IO.FileStream(Destination,


IO.FileMode.Create,
IO.FileAccess.Write, IO.FileShare.None)
Try
While 1 = 1
Fd.WriteByte(Sr.ReadByte)
End While
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing

Merci pour votre aide
Sylvain MALLEVAL








Avatar
Sylvain MALLEVAL
c nickel, a force de bricolé, ca a marché
LE problème, c'est que quand je lit trop de bit cela plante...(la lecture
s'arrête normalement comme s'il avait atteind la fin de fichier alors que y
a encore des trucs à lirte). Je pense que cela doit dépendre de la vitesse
de connexion...
Le problème est que je ne connais pas la vitesse de connexion de mon
utilisateur (modem analogique ou ADSL). Alors je suis obligé de régler cela
au plus bas...

Y a t'il une autre solution

Merci

Sylvain

"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> a écrit dans le message de
news:
Super, merci beaucoup...

"Paul Bacelar" a écrit dans le message
de news: O4H4$
Const upperBound As Integer = 1000
Dim dataArray(upperBound) As Byte
Dim lu As Integer = 0

Try
While (lu = Sr.Read(dataArray, 0, dataArray.Length)) >> dataArray.Length
Fd.Write(dataArray,0, dataArray.Length)
End While
If lu <>0 then
Fd.Write(dataArray,0, lu)
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing


--
Paul Bacelar

"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> wrote in message
news:#
Bonjour,

pour télécharger un fichier internet et pouvoir afficher l'évolution du
téléchargement, je lit en fait le fichier comme un fichier binaire et je
crée un fichier sur le client
de ce fait, mon algo est tout bete:

tant que PAS fin de fichier
je lis
j'écris
fin tant que

le problème est que je ne sais lire que bit par bit et c'est long.


Quelqu'un
pourrait-il changer mon code pour que je lise par paquet de 1000 bit (ou
plus)
je pense que c pas compliqué mais je rame et je trouve pas. Voici mon


code:

Dim Uri As New Uri(adresse_du_fichier)
Dim Request As System.Net.WebRequest = Request.Create(Uri)
Dim Response As System.Net.WebResponse = Request.GetResponse
Dim Sr As System.IO.BinaryReader = Nothing
Sr = New System.IO.BinaryReader(Response.GetResponseStream)
Dim Fd As New System.IO.FileStream(Destination,


IO.FileMode.Create,
IO.FileAccess.Write, IO.FileShare.None)
Try
While 1 = 1
Fd.WriteByte(Sr.ReadByte)
End While
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing

Merci pour votre aide
Sylvain MALLEVAL












Avatar
Paul Bacelar
Vous lisez plus vite que vous ne téléchargez.

Il suffit de sortir de la boucle que lors de la fin du téléchargement et pas
sur une taille de lecture de 0 et de faire une temporisation dans ce cas
pour laisser du temps aux octets pour arriver sur votre machine.
--
Paul Bacelar



"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> wrote in message
news:uCtj#$
c nickel, a force de bricolé, ca a marché
LE problème, c'est que quand je lit trop de bit cela plante...(la lecture
s'arrête normalement comme s'il avait atteind la fin de fichier alors que


y
a encore des trucs à lirte). Je pense que cela doit dépendre de la vitesse
de connexion...
Le problème est que je ne connais pas la vitesse de connexion de mon
utilisateur (modem analogique ou ADSL). Alors je suis obligé de régler


cela
au plus bas...

Y a t'il une autre solution

Merci

Sylvain

"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> a écrit dans le message de
news:
> Super, merci beaucoup...
>
> "Paul Bacelar" a écrit dans le


message
> de news: O4H4$
>> Const upperBound As Integer = 1000
>> Dim dataArray(upperBound) As Byte
>> Dim lu As Integer = 0
>>
>> Try
>> While (lu = Sr.Read(dataArray, 0, dataArray.Length)) > >> dataArray.Length
>> Fd.Write(dataArray,0, dataArray.Length)
>> End While
>> If lu <>0 then
>> Fd.Write(dataArray,0, lu)
>> Catch ex As Exception
>>
>> End Try
>> Sr.Close() : Sr = Nothing
>> Fd.Close() : Fd = Nothing
>>
>>
>> --
>> Paul Bacelar
>>
>> "Sylvain MALLEVAL" <devbnet@[antispam]free.fr> wrote in message
>> news:#
>>> Bonjour,
>>>
>>> pour télécharger un fichier internet et pouvoir afficher l'évolution


du
>>> téléchargement, je lit en fait le fichier comme un fichier binaire et


je
>>> crée un fichier sur le client
>>> de ce fait, mon algo est tout bete:
>>>
>>> tant que PAS fin de fichier
>>> je lis
>>> j'écris
>>> fin tant que
>>>
>>> le problème est que je ne sais lire que bit par bit et c'est long.
>> Quelqu'un
>>> pourrait-il changer mon code pour que je lise par paquet de 1000 bit


(ou
>>> plus)
>>> je pense que c pas compliqué mais je rame et je trouve pas. Voici mon
>> code:
>>>
>>> Dim Uri As New Uri(adresse_du_fichier)
>>> Dim Request As System.Net.WebRequest = Request.Create(Uri)
>>> Dim Response As System.Net.WebResponse = Request.GetResponse
>>> Dim Sr As System.IO.BinaryReader = Nothing
>>> Sr = New System.IO.BinaryReader(Response.GetResponseStream)
>>> Dim Fd As New System.IO.FileStream(Destination,
>> IO.FileMode.Create,
>>> IO.FileAccess.Write, IO.FileShare.None)
>>> Try
>>> While 1 = 1
>>> Fd.WriteByte(Sr.ReadByte)
>>> End While
>>> Catch ex As Exception
>>>
>>> End Try
>>> Sr.Close() : Sr = Nothing
>>> Fd.Close() : Fd = Nothing
>>>
>>> Merci pour votre aide
>>> Sylvain MALLEVAL
>>>
>>>
>>
>>
>
>




Avatar
Simon Mourier [MS]
Le code ci dessous n'est pas correct. Il ne faut pas exécuter la boucle tant
que le nombre d'octets lu est égal au nombre d'octets demandés, mais tant
qu'il est supérieur à 0. En gros:

While (lu = Sr.Read(dataArray, 0, dataArray.Length)) > 0)
If lu > 0 Then Fd.Write(dataArray,0, lu)
End While


Simon.

"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> a écrit dans le message de
news: uCtj%23$
c nickel, a force de bricolé, ca a marché
LE problème, c'est que quand je lit trop de bit cela plante...(la lecture
s'arrête normalement comme s'il avait atteind la fin de fichier alors que
y a encore des trucs à lirte). Je pense que cela doit dépendre de la
vitesse de connexion...
Le problème est que je ne connais pas la vitesse de connexion de mon
utilisateur (modem analogique ou ADSL). Alors je suis obligé de régler
cela au plus bas...

Y a t'il une autre solution

Merci

Sylvain

"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> a écrit dans le message de
news:
Super, merci beaucoup...

"Paul Bacelar" a écrit dans le
message de news: O4H4$
Const upperBound As Integer = 1000
Dim dataArray(upperBound) As Byte
Dim lu As Integer = 0

Try
While (lu = Sr.Read(dataArray, 0, dataArray.Length)) >>> dataArray.Length
Fd.Write(dataArray,0, dataArray.Length)
End While
If lu <>0 then
Fd.Write(dataArray,0, lu)
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing


--
Paul Bacelar

"Sylvain MALLEVAL" <devbnet@[antispam]free.fr> wrote in message
news:#
Bonjour,

pour télécharger un fichier internet et pouvoir afficher l'évolution du
téléchargement, je lit en fait le fichier comme un fichier binaire et
je
crée un fichier sur le client
de ce fait, mon algo est tout bete:

tant que PAS fin de fichier
je lis
j'écris
fin tant que

le problème est que je ne sais lire que bit par bit et c'est long.


Quelqu'un
pourrait-il changer mon code pour que je lise par paquet de 1000 bit
(ou
plus)
je pense que c pas compliqué mais je rame et je trouve pas. Voici mon


code:

Dim Uri As New Uri(adresse_du_fichier)
Dim Request As System.Net.WebRequest = Request.Create(Uri)
Dim Response As System.Net.WebResponse = Request.GetResponse
Dim Sr As System.IO.BinaryReader = Nothing
Sr = New System.IO.BinaryReader(Response.GetResponseStream)
Dim Fd As New System.IO.FileStream(Destination,


IO.FileMode.Create,
IO.FileAccess.Write, IO.FileShare.None)
Try
While 1 = 1
Fd.WriteByte(Sr.ReadByte)
End While
Catch ex As Exception

End Try
Sr.Close() : Sr = Nothing
Fd.Close() : Fd = Nothing

Merci pour votre aide
Sylvain MALLEVAL