home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / io / OutputStreamWriter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  2.7 KB  |  164 lines

  1. package java.io;
  2.  
  3. import sun.io.CharToByteConverter;
  4. import sun.io.ConversionBufferFullException;
  5.  
  6. public class OutputStreamWriter extends Writer {
  7.    private CharToByteConverter ctb;
  8.    private OutputStream out;
  9.    private static final int defaultByteBufferSize = 8192;
  10.    // $FF: renamed from: bb byte[]
  11.    private byte[] field_0;
  12.    private int nextByte;
  13.    private int nBytes;
  14.  
  15.    public OutputStreamWriter(OutputStream var1, String var2) throws UnsupportedEncodingException {
  16.       this(var1, CharToByteConverter.getConverter(var2));
  17.    }
  18.  
  19.    public OutputStreamWriter(OutputStream var1) {
  20.       this(var1, CharToByteConverter.getDefault());
  21.    }
  22.  
  23.    private OutputStreamWriter(OutputStream var1, CharToByteConverter var2) {
  24.       super(var1);
  25.       this.out = var1;
  26.       this.ctb = var2;
  27.       this.field_0 = new byte[8192];
  28.       this.nBytes = 8192;
  29.    }
  30.  
  31.    public String getEncoding() {
  32.       Object var2 = super.lock;
  33.       synchronized(var2){}
  34.  
  35.       String var1;
  36.       try {
  37.          if (this.ctb == null) {
  38.             var1 = null;
  39.             return var1;
  40.          }
  41.  
  42.          var1 = this.ctb.getCharacterEncoding();
  43.       } catch (Throwable var5) {
  44.          throw var5;
  45.       }
  46.  
  47.       return var1;
  48.    }
  49.  
  50.    private void ensureOpen() throws IOException {
  51.       if (this.out == null) {
  52.          throw new IOException("Stream closed");
  53.       }
  54.    }
  55.  
  56.    public void write(int var1) throws IOException {
  57.       char[] var2 = new char[]{(char)var1};
  58.       this.write((char[])var2, 0, 1);
  59.    }
  60.  
  61.    public void write(char[] var1, int var2, int var3) throws IOException {
  62.       Object var4 = super.lock;
  63.       synchronized(var4){}
  64.  
  65.       try {
  66.          this.ensureOpen();
  67.          int var6 = var2;
  68.          int var7 = var2 + var3;
  69.  
  70.          while(var6 < var7) {
  71.             boolean var8 = false;
  72.  
  73.             try {
  74.                this.nextByte += this.ctb.convert(var1, var6, var7, this.field_0, this.nextByte, this.nBytes);
  75.                var6 = var7;
  76.             } catch (ConversionBufferFullException var12) {
  77.                int var9 = this.ctb.nextCharIndex();
  78.                if (var9 == var6) {
  79.                   throw new CharConversionException("Output buffer too small");
  80.                }
  81.  
  82.                var6 = var9;
  83.                var8 = true;
  84.                this.nextByte = this.ctb.nextByteIndex();
  85.             }
  86.  
  87.             if (this.nextByte >= this.nBytes || var8) {
  88.                this.out.write(this.field_0, 0, this.nextByte);
  89.                this.nextByte = 0;
  90.             }
  91.          }
  92.       } catch (Throwable var13) {
  93.          throw var13;
  94.       }
  95.  
  96.    }
  97.  
  98.    public void write(String var1, int var2, int var3) throws IOException {
  99.       char[] var4 = new char[var3];
  100.       var1.getChars(var2, var2 + var3, var4, 0);
  101.       this.write((char[])var4, 0, var3);
  102.    }
  103.  
  104.    void flushBuffer() throws IOException {
  105.       Object var1 = super.lock;
  106.       synchronized(var1){}
  107.  
  108.       try {
  109.          this.ensureOpen();
  110.  
  111.          while(true) {
  112.             try {
  113.                this.nextByte += this.ctb.flush(this.field_0, this.nextByte, this.nBytes);
  114.             } catch (ConversionBufferFullException var4) {
  115.                this.nextByte = this.ctb.nextByteIndex();
  116.             }
  117.  
  118.             if (this.nextByte == 0) {
  119.                return;
  120.             }
  121.  
  122.             if (this.nextByte > 0) {
  123.                this.out.write(this.field_0, 0, this.nextByte);
  124.                this.nextByte = 0;
  125.             }
  126.          }
  127.       } catch (Throwable var5) {
  128.          throw var5;
  129.       }
  130.    }
  131.  
  132.    public void flush() throws IOException {
  133.       Object var1 = super.lock;
  134.       synchronized(var1){}
  135.  
  136.       try {
  137.          this.flushBuffer();
  138.          this.out.flush();
  139.       } catch (Throwable var3) {
  140.          throw var3;
  141.       }
  142.  
  143.    }
  144.  
  145.    public void close() throws IOException {
  146.       Object var1 = super.lock;
  147.       synchronized(var1){}
  148.  
  149.       try {
  150.          if (this.out != null) {
  151.             this.flush();
  152.             this.out.close();
  153.             this.out = null;
  154.             this.field_0 = null;
  155.             this.ctb = null;
  156.             return;
  157.          }
  158.       } catch (Throwable var4) {
  159.          throw var4;
  160.       }
  161.  
  162.    }
  163. }
  164.