Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package org.apache.pig.impl.io;
 
 
 
 public class BufferedPositionedInputStream extends InputStream {
     long pos;
     InputStream in;
     static final int bufSize = 1024;
     
     public BufferedPositionedInputStream(InputStream inlong pos) {
 		// Don't buffer a bzip stream as it will cause problems for split
 		// records.
 		if (in instanceof CBZip2InputStreamthis. = in;
 		else this. = new BufferedInputStream(in);
         this. = pos;
     }
     
         this(in,0);
     }
     
     @Override
     public int read() throws IOException {
         int c = .read();
         ++;
         return c;
     }
 
     @Override
     public int read(byte b[], int offint lenthrows IOException {
         int read = .read(bofflen);
          += read;
         return read;
     }
 
     @Override
     public long skip(long nthrows IOException {
         long rc = .skip(n);
          += rc;
         return rc;
     }
    
    
Returns the current position in the tracked InputStream.
 
     public long getPosition() throws IOException{
         if ( instanceof CBZip2InputStream)
             return ((CBZip2InputStream)).getPos();
         return ;
     }
 
     /*
      * Preallocated array for readline buffering
      */
     private byte barray[] = new byte[1024];
 
     /*
      * Preallocated ByteBuffer for readline buffering
      */
     private ByteBuffer bbuff = ByteBuffer.wrap();
 
     /*
      * Preallocated char array for decoding bytes
      */
     private char carray[] = new char[1024];
 
     /*
      * Preallocated CharBuffer for decoding bytes
      */
     private CharBuffer cbuff = CharBuffer.wrap();
 
    public String readLine(Charset charsetbyte delimiterthrows IOException {
        CharsetDecoder decoder = charset.newDecoder();
        int delim = delimiter&0xff;
        int rc;
        int offset = 0;
        StringBuilder sb = null;
        CoderResult res;
        while ((rc = read())!=-1) {
            if (rc == delim) {
                break;
            }
            [offset++] = (byte)rc;
            if (. == offset) {
                .position(0);
                .limit(.);
                .position(0);
                .limit(.);
                res = decoder.decode(false);
                if (res.isError()) {
                    throw new IOException("Decoding error: " + res.toString());
                }
                offset = .remaining();
                switch (offset) {
                default:
                    System.arraycopy(.position(), , 0, 
                            .remaining());
                    break;
                case 2:
                    [1] = [. - 1];
                    [0] = [. - 2];
                    break;
                case 1:
                    [0] = [. - 1];
                    break;
                case 0:
                }
                if (sb == null) {
                    sb = new StringBuilder(.position());
                }
                sb.append(, 0, .position());
            }
        }
        if (sb == null) {
            if (rc == -1 && offset == 0) {
                // We are at EOF with nothing read
                return null;
            }
            sb = new StringBuilder();
        }
        .position(0);
        .limit(offset);
        .position(0);
        .limit(.);
        res = decoder.decode(true);
        if (res.isError()) {
            ..println("Error");
        }
        sb.append(, 0, .position());
        .position(0);
        res = decoder.flush();
        if (res.isError()) {
            ..println("Error");
        }
        sb.append(, 0, .position());
        return sb.toString();
    }
    public void close() throws IOException {
        super.close();
        .close();
    }
New to GrepCode? Check out our FAQ X