Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   package com.stratio.mojo.unix.ar;
  
  /*
   * The MIT License
   *
   * Copyright 2009 The Codehaus.
   *
   * Permission is hereby granted, free of charge, to any person obtaining a copy of
   * this software and associated documentation files (the "Software"), to deal in
  * the Software without restriction, including without limitation the rights to
  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
  * of the Software, and to permit persons to whom the Software is furnished to do
  * so, subject to the following conditions:
  *
  * The above copyright notice and this permission notice shall be included in all
  * copies or substantial portions of the Software.
  *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  * SOFTWARE.
  */
 
 
 import java.io.*;
 import java.util.*;

Author(s):
Trygve Laugstøl
 
 public class ArReader
     implements CloseableIterable<ReadableArFile>
 {
     private InputStream is;
 
     public ArReaderFile file )
         throws IOException
     {
          = new FileInputStreamfile );
 
         String magic = new String( ArUtil.readBytes, 8 ), . );
 
         if ( !magic.equals. ) )
         {
             throw new InvalidArchiveMagicException();
         }
     }
 
     public Iterator<ReadableArFileiterator()
     {
         return new ArFileIterator();
     }
 
     public void close()
     {
         IOUtil.close );
     }
 
     public ReadableArFile readFile()
         throws IOException
     {
         byte[] bytes = ArUtil.readBytes, 60 );
 
         if ( bytes == null )
         {
             return null;
         }
 
         ReadableArFile arFile = new ReadableArFile );
         arFile.name = ArUtil.convertStringbytes, 0, 16 );
         arFile.lastModified = Long.parseLong( ArUtil.convertStringbytes, 16, 12 ) );
         arFile.ownerId = Integer.parseInt( ArUtil.convertStringbytes, 28, 6 ) );
         arFile.groupId = Integer.parseInt( ArUtil.convertStringbytes, 34, 6 ) );
         arFile.mode = Integer.parseInt( ArUtil.convertStringbytes, 40, 8 ), 8 );
         arFile.size = Long.parseLong( ArUtil.convertStringbytes, 48, 10 ) );
 
         if ( arFile.name.endsWith"/" ) )
         {
             arFile.name = arFile.name.substring( 0, arFile.name.length() - 1 );
         }
 
         String fileMagic = ArUtil.convertStringbytes, 58, 2 );
 
         if ( !fileMagic.equals. ) )
         {
             throw new InvalidFileMagicException();
         }
 
         return arFile;
     }
 
     public class ArFileIterator
         implements Iterator<ReadableArFile>
     {
 
        private boolean used;
        private boolean atEnd;
        private ReadableArFile file;
        public boolean hasNext()
        {
            updateNext();
            return  != null;
        }
        public ReadableArFile next()
        {
            updateNext();
            if (  == null )
            {
                throw new NoSuchElementException();
            }
             = true;
            return ;
        }
        private void updateNext()
        {
            try
            {
                if (  )
                {
                    .close();
                     = null;
                     = false;
                }
                // There already is an element ready
                if (  != null )
                {
                    return;
                }
                // If we're at the end, don't call readFile() anymore as that will throw an IOException
                if (  )
                {
                    return;
                }
                 = readFile();
                 =  == null;
                if (  )
                {
                    close();
                }
            }
            catch ( IOException ex )
            {
                // ignore
            }
        }
        public void remove()
        {
            throw new UnsupportedOperationException"Not implemented." );
        }
    }
New to GrepCode? Check out our FAQ X