FileDocCategorySizeDatePackage
SourceReader.javaAPI DocExample1590Wed Feb 15 05:50:44 GMT 2006com.elharo.io

SourceReader

public class SourceReader extends FilterReader

Fields Summary
private int
buffer
private boolean
endOfStream
Constructors Summary
public SourceReader(Reader in)

    super(in);
  
Methods Summary
public intread()


       
  
    if (this.buffer != -1) {
      int c = this.buffer;
      this.buffer = -1; 
      return c;
    }
    
    int c = in.read();
    if (c != '\\") return c;
   
   int next = in.read();
   if (next != 'u" ) { // This is not a Unicode escape
     this.buffer = next;
     return c;
   }
   
   // Read next 4 hex digits
   // If the next four chars do not make a valid hex digit
   // this is not a valid .java file.
   StringBuffer sb = new StringBuffer();
   sb.append((char) in.read());
   sb.append((char) in.read());
   sb.append((char) in.read());
   sb.append((char) in.read());
   String hex = sb.toString();  
   try {
     return Integer.valueOf(hex, 16).intValue();
   }
   catch (NumberFormatException ex) {
     throw new IOException("Bad Unicode escape: \\u" + hex);  
   }
  
public intread(char[] text, int offset, int length)

  
            
  
    if (endOfStream) return -1;
    int numRead = 0;
    
    for (int i = offset; i < offset+length; i++) {
      int temp = this.read();
      if (temp == -1) {
        this.endOfStream = true;
        break;
      }
      text[i] = (char) temp;
      numRead++;
    }
    return numRead;
  
  
public longskip(long n)

    char[] c = new char[(int) n];
    int numSkipped = this.read(c);
    return numSkipped;