home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / io / StringReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  1.6 KB  |  94 lines

  1. package java.io;
  2.  
  3. public class StringReader extends Reader {
  4.    private String str;
  5.    private int length;
  6.    private int next = 0;
  7.    private int mark = 0;
  8.  
  9.    public StringReader(String var1) {
  10.       this.str = var1;
  11.       this.length = var1.length();
  12.    }
  13.  
  14.    private void ensureOpen() throws IOException {
  15.       if (this.str == null) {
  16.          throw new IOException("Stream closed");
  17.       }
  18.    }
  19.  
  20.    public int read() throws IOException {
  21.       synchronized(this.lock) {
  22.          this.ensureOpen();
  23.          return this.next >= this.length ? -1 : this.str.charAt(this.next++);
  24.       }
  25.    }
  26.  
  27.    public int read(char[] var1, int var2, int var3) throws IOException {
  28.       synchronized(this.lock) {
  29.          this.ensureOpen();
  30.          if (var2 >= 0 && var2 <= var1.length && var3 >= 0 && var2 + var3 <= var1.length && var2 + var3 >= 0) {
  31.             if (var3 == 0) {
  32.                return 0;
  33.             } else if (this.next >= this.length) {
  34.                return -1;
  35.             } else {
  36.                int var5 = Math.min(this.length - this.next, var3);
  37.                this.str.getChars(this.next, this.next + var5, var1, var2);
  38.                this.next += var5;
  39.                return var5;
  40.             }
  41.          } else {
  42.             throw new IndexOutOfBoundsException();
  43.          }
  44.       }
  45.    }
  46.  
  47.    public long skip(long var1) throws IOException {
  48.       synchronized(this.lock) {
  49.          this.ensureOpen();
  50.          if (this.next >= this.length) {
  51.             return 0L;
  52.          } else {
  53.             long var4 = Math.min((long)(this.length - this.next), var1);
  54.             var4 = Math.max((long)(-this.next), var4);
  55.             this.next = (int)((long)this.next + var4);
  56.             return var4;
  57.          }
  58.       }
  59.    }
  60.  
  61.    public boolean ready() throws IOException {
  62.       synchronized(this.lock) {
  63.          this.ensureOpen();
  64.          return true;
  65.       }
  66.    }
  67.  
  68.    public boolean markSupported() {
  69.       return true;
  70.    }
  71.  
  72.    public void mark(int var1) throws IOException {
  73.       if (var1 < 0) {
  74.          throw new IllegalArgumentException("Read-ahead limit < 0");
  75.       } else {
  76.          synchronized(this.lock) {
  77.             this.ensureOpen();
  78.             this.mark = this.next;
  79.          }
  80.       }
  81.    }
  82.  
  83.    public void reset() throws IOException {
  84.       synchronized(this.lock) {
  85.          this.ensureOpen();
  86.          this.next = this.mark;
  87.       }
  88.    }
  89.  
  90.    public void close() {
  91.       this.str = null;
  92.    }
  93. }
  94.