Thanks
most of that code looks strange now, but when i did it the first time it made
total sense to do it the way i did.
Rob
On Saturday 21 April 2001 21:08, you wrote:
> Issac already answered this correctly, but I'll have a go as well.
>
> >Following is the relevant code i'm using. There may
> >be syntax errors as i haven't run the code.. I just need
> >to know a method of reading a gif properly.
>
> First, why are you doing this? Can't you use the default servlet
> somehow to serve content?
>
> Now, on with the code critique:
> >res.setContentType("image/gif");
> >PrintWriter toClient = res.getWriter();
>
> This is your first problem, the PrintWriter is only to be used for
> text output.
>
> >toClient.println(readfile("/path.to/image.gif"));
>
> This is your second problem. Why are you reading a GIF file into a
> String? That won't work because a String is for text and a GIF file
> isn't text.
>
> Anyway, it's a bad idea because of the peformance hit of reading the
> whole GIF file into memory at once, what if the GIF file were 1000Kb?
>
> >toClient.close();
> >
> >public String readfile(String infilepath) {
> > InputStream inf = new FileInputStream(infilepath);
> > BufferedInputStream bin = new BufferedInputStream(inf);
> > int len = bin.available();
>
> This is another problem, available() reports what is in a buffer and
> that's not necessarily the same as the size of the file.
>
>
> Here's some code that works for either text files or binary files:
>
> {
> response.setContentType(whatever);
> OutputStream out=response.getOutputStream();
> FileInputStream fin=new FileInputStream(fname);
> byte[] buf=new byte[5000];
> int red=fin.read(buf,0,5000);
> while(red>-1)
> {
> out.write(buf,0,red);
> red=find.read(buf,0,5000);
> }
> out.close();
> }
>
>
> This is efficient. It reads the file in blocks and writes the block
> out before continuing. It understands the available() call properly.
> It also handles text or binary data.
>
>
> Nic
>
> ___________________________________________________________________________
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html