Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2013 The Guava Authors
   *
   * Licensed 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 com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
 import java.io.Reader;
A java.io.Reader that reads the characters in a java.lang.CharSequence. Like StringReader, but works with any java.lang.CharSequence.

Author(s):
Colin Decker
 
 // TODO(user): make this public? as a type, or a method in CharStreams?
 final class CharSequenceReader extends Reader {
 
   private CharSequence seq;
   private int pos;
   private int mark;

  
Creates a new reader wrapping the given character sequence.
 
   public CharSequenceReader(CharSequence seq) {
     this. = checkNotNull(seq);
   }
 
   private void checkOpen() throws IOException {
     if ( == null) {
       throw new IOException("reader closed");
     }
   }
 
   private boolean hasRemaining() {
     return remaining() > 0;
   }
 
   private int remaining() {
     return .length() - ;
   }
 
   @Override
   public synchronized int read(CharBuffer targetthrows IOException {
     checkNotNull(target);
     checkOpen();
     if (!hasRemaining()) {
       return -1;
     }
     int charsToRead = Math.min(target.remaining(), remaining());
     for (int i = 0; i < charsToReadi++) {
       target.put(.charAt(++));
     }
     return charsToRead;
   }
 
   @Override
   public synchronized int read() throws IOException {
     checkOpen();
     return hasRemaining() ? .charAt(++) : -1;
   }
 
   @Override
   public synchronized int read(char[] cbufint offint lenthrows IOException {
     checkPositionIndexes(offoff + lencbuf.length);
     checkOpen();
     if (!hasRemaining()) {
       return -1;
     }
     int charsToRead = Math.min(lenremaining());
     for (int i = 0; i < charsToReadi++) {
       cbuf[off + i] = .charAt(++);
     }
     return charsToRead;
   }
 
   @Override
   public synchronized long skip(long nthrows IOException {
     checkArgument(n >= 0, "n (%s) may not be negative"n);
     checkOpen();
     int charsToSkip = (int) Math.min(remaining(), n); // safe because remaining is an int
     += charsToSkip;
    return charsToSkip;
  }
  public synchronized boolean ready() throws IOException {
    checkOpen();
    return true;
  }
  public boolean markSupported() {
    return true;
  }
  public synchronized void mark(int readAheadLimitthrows IOException {
    checkArgument(readAheadLimit >= 0, "readAheadLimit (%s) may not be negative"readAheadLimit);
    checkOpen();
     = ;
  }
  public synchronized void reset() throws IOException {
    checkOpen();
     = ;
  }
  public synchronized void close() throws IOException {
     = null;
  }
New to GrepCode? Check out our FAQ X