Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  //
  //  ========================================================================
  //  Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
  //  ------------------------------------------------------------------------
  //  All rights reserved. This program and the accompanying materials
  //  are made available under the terms of the Eclipse Public License v1.0
  //  and Apache License v2.0 which accompanies this distribution.
  //
  //      The Eclipse Public License is available at
 //      http://www.eclipse.org/legal/epl-v10.html
 //
 //      The Apache License v2.0 is available at
 //      http://www.opensource.org/licenses/apache2.0.php
 //
 //  You may elect to redistribute this code under either of these licenses.
 //  ========================================================================
 //
 
 package org.eclipse.jetty.util;
 import java.io.File;
 import java.io.Reader;
 import java.io.Writer;
 
 
 /* ======================================================================== */
IO Utilities. Provides stream handling utilities in singleton Threadpool implementation accessed by static members.
 
 public class IO 
 {
     private static final Logger LOG = Log.getLogger(IO.class);
     
     /* ------------------------------------------------------------------- */
     public final static String
         CRLF      = "\015\012";
 
     /* ------------------------------------------------------------------- */
     public final static byte[]
         CRLF_BYTES    = {(byte)'\015',(byte)'\012'};
 
     /* ------------------------------------------------------------------- */
     public static int bufferSize = 64*1024;
     
     /* ------------------------------------------------------------------- */
     // TODO get rid of this singleton!
     private static class Singleton {
         static final QueuedThreadPool __pool=new QueuedThreadPool();
         static
         {
             try{.start();}
             catch(Exception e){.warn(e); System.exit(1);}
         }
     }
 
     /* ------------------------------------------------------------------- */
     static class Job implements Runnable
     {
         InputStream in;
         OutputStream out;
         Reader read;
         Writer write;
 
         Job(InputStream in,OutputStream out)
         {
             this.=in;
             this.=out;
             this.=null;
             this.=null;
         }
         Job(Reader read,Writer write)
         {
             this.=null;
             this.=null;
             this.=read;
             this.=write;
         }
         
         /* ------------------------------------------------------------ */
         /* 
          * @see java.lang.Runnable#run()
          */
         public void run()
         {
             try {
                 if (!=null)
                     copy(,,-1);
                else
                    copy(,,-1);
            }
            catch(IOException e)
            {
                .ignore(e);
                try{
                    if (!=null)
                        .close();
                    if (!=null)
                        .close();
                }
                catch(IOException e2)
                {
                    .ignore(e2);
                }
            }
        }
    }
    
    /* ------------------------------------------------------------------- */
    
Copy Stream in to Stream out until EOF or exception. in own thread
    public static void copyThread(InputStream inOutputStream out)
    {
        try{
            Job job=new Job(in,out);
            if (!..dispatch(job))
                job.run();
        }
        catch(Exception e)
        {
            .warn(e);
        }
    }
    
    /* ------------------------------------------------------------------- */
    
Copy Stream in to Stream out until EOF or exception.
    public static void copy(InputStream inOutputStream out)
         throws IOException
    {
        copy(in,out,-1);
    }
    
    /* ------------------------------------------------------------------- */
    
Copy Stream in to Stream out until EOF or exception in own thread
    public static void copyThread(Reader inWriter out)
    {
        try
        {
            Job job=new Job(in,out);
            if (!..dispatch(job))
                job.run();
        }
        catch(Exception e)
        {
            .warn(e);
        }
    }
    
    /* ------------------------------------------------------------------- */
    
Copy Reader to Writer out until EOF or exception.
    public static void copy(Reader inWriter out)
         throws IOException
    {
        copy(in,out,-1);
    }
    
    /* ------------------------------------------------------------------- */
    
Copy Stream in to Stream for byteCount bytes or until EOF or exception.
    public static void copy(InputStream in,
                            OutputStream out,
                            long byteCount)
         throws IOException
    {     
        byte buffer[] = new byte[];
        int len=;
        
        if (byteCount>=0)
        {
            while (byteCount>0)
            {
                int max = byteCount<?(int)byteCount:;
                len=in.read(buffer,0,max);
                
                if (len==-1)
                    break;
                
                byteCount -= len;
                out.write(buffer,0,len);
            }
        }
        else
        {
            while (true)
            {
                len=in.read(buffer,0,);
                if (len<0 )
                    break;
                out.write(buffer,0,len);
            }
        }
    }  
    
    /* ------------------------------------------------------------------- */
    
Copy Reader to Writer for byteCount bytes or until EOF or exception.
    public static void copy(Reader in,
                            Writer out,
                            long byteCount)
         throws IOException
    {  
        char buffer[] = new char[];
        int len=;
        
        if (byteCount>=0)
        {
            while (byteCount>0)
            {
                if (byteCount<)
                    len=in.read(buffer,0,(int)byteCount);
                else
                    len=in.read(buffer,0,);                   
                
                if (len==-1)
                    break;
                
                byteCount -= len;
                out.write(buffer,0,len);
            }
        }
        else if (out instanceof PrintWriter)
        {
            PrintWriter pout=(PrintWriter)out;
            while (!pout.checkError())
            {
                len=in.read(buffer,0,);
                if (len==-1)
                    break;
                out.write(buffer,0,len);
            }
        }
        else
        {
            while (true)
            {
                len=in.read(buffer,0,);
                if (len==-1)
                    break;
                out.write(buffer,0,len);
            }
        }
    }
    /* ------------------------------------------------------------ */
    
Copy files or directories

Parameters:
from
to
Throws:
java.io.IOException
    public static void copy(File from,File tothrows IOException
    {
        if (from.isDirectory())
            copyDir(from,to);
        else
            copyFile(from,to);
    }
    /* ------------------------------------------------------------ */
    public static void copyDir(File from,File tothrows IOException
    {
        if (to.exists())
        {
            if (!to.isDirectory())
                throw new IllegalArgumentException(to.toString());
        }
        else
            to.mkdirs();
        
        File[] files = from.listFiles();
        if (files!=null)
        {
            for (int i=0;i<files.length;i++)
            {
                String name = files[i].getName();
                if (".".equals(name) || "..".equals(name))
                    continue;
                copy(files[i],new File(to,name));
            }
        }
    }
    
    /* ------------------------------------------------------------ */
    public static void copyFile(File from,File tothrows IOException
    {
        FileInputStream in=new FileInputStream(from);
        FileOutputStream out=new FileOutputStream(to);
        copy(in,out);
        in.close();
        out.close();
    }
    
    /* ------------------------------------------------------------ */
    
Read input stream to string.
    public static String toString(InputStream in)
        throws IOException
    {
        return toString(in,null);
    }
    
    /* ------------------------------------------------------------ */
    
Read input stream to string.
    public static String toString(InputStream in,String encoding)
        throws IOException
    {
        StringWriter writer=new StringWriter();
        InputStreamReader reader = encoding==null?new InputStreamReader(in):new InputStreamReader(in,encoding);
        
        copy(reader,writer);
        return writer.toString();
    }
    
    /* ------------------------------------------------------------ */
    
Read input stream to string.
    public static String toString(Reader in)
        throws IOException
    {
        StringWriter writer=new StringWriter();
        copy(in,writer);
        return writer.toString();
    }
    /* ------------------------------------------------------------ */
    
Delete File. This delete will recursively delete directories - BE CAREFULL

Parameters:
file The file to be deleted.
    public static boolean delete(File file)
    {
        if (!file.exists())
            return false;
        if (file.isDirectory())
        {
            File[] files = file.listFiles();
            for (int i=0;files!=null && i<files.length;i++)
                delete(files[i]);
        }
        return file.delete();
    }
    /* ------------------------------------------------------------ */
    
closes an input stream, and logs exceptions

Parameters:
is the input stream to close
    public static void close(InputStream is)
    {
        try
        {
            if (is != null)
                is.close();
        }
        catch (IOException e)
        {
            .ignore(e);
        }
    }

    
closes a reader, and logs exceptions

Parameters:
reader the reader to close
    public static void close(Reader reader)
    {
        try
        {
            if (reader != null)
                reader.close();
        } catch (IOException e)
        {
            .ignore(e);
        }
    }

    
closes a writer, and logs exceptions

Parameters:
writer the writer to close
    public static void close(Writer writer)
    {
        try
        {
            if (writer != null)
                writer.close();
        } catch (IOException e)
        {
            .ignore(e);
        }
    }
    
    /* ------------------------------------------------------------ */
    public static byte[] readBytes(InputStream in)
        throws IOException
    {
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        copy(in,bout);
        return bout.toByteArray();
    }
    
    /* ------------------------------------------------------------ */
    
closes an output stream, and logs exceptions

Parameters:
os the output stream to close
    public static void close(OutputStream os)
    {
        try
        {
            if (os != null)
                os.close();
        }
        catch (IOException e)
        {
            .ignore(e);
        }
    }
    /* ------------------------------------------------------------ */
    

Returns:
An outputstream to nowhere
    public static OutputStream getNullStream()
    {
        return ;
    }
    /* ------------------------------------------------------------ */
    

Returns:
An outputstream to nowhere
    public static InputStream getClosedStream()
    {
        return ;
    }
    
    /* ------------------------------------------------------------ */
    /* ------------------------------------------------------------ */
    private static class NullOS extends OutputStream                                    
    {
        @Override
        public void close(){}
        @Override
        public void flush(){}
        @Override
        public void write(byte[]b){}
        @Override
        public void write(byte[]b,int i,int l){}
        @Override
        public void write(int b){}
    }
    private static NullOS __nullStream = new NullOS();
    
    /* ------------------------------------------------------------ */
    /* ------------------------------------------------------------ */
    private static class ClosedIS extends InputStream                                    
    {
        @Override
        public int read() throws IOException
        {
            return -1;
        }
    }
    private static ClosedIS __closedStream = new ClosedIS();
    
    /* ------------------------------------------------------------ */
    

Returns:
An writer to nowhere
    public static Writer getNullWriter()
    {
        return ;
    }
    
    /* ------------------------------------------------------------ */
    

Returns:
An writer to nowhere
    public static PrintWriter getNullPrintWriter()
    {
        return ;
    }
    
    /* ------------------------------------------------------------ */
    /* ------------------------------------------------------------ */
    private static class NullWrite extends Writer                                    
    {
        @Override
        public void close(){}
        @Override
        public void flush(){}
        @Override
        public void write(char[]b){}
        @Override
        public void write(char[]b,int o,int l){}
        @Override
        public void write(int b){}
        @Override
        public void write(String s){}
        @Override
        public void write(String s,int o,int l){}
    }
    private static NullWrite __nullWriter = new NullWrite();
    private static PrintWriter __nullPrintWriter = new PrintWriter();
New to GrepCode? Check out our FAQ X