001 /* 002 * Copyright (c) 2005 Henri Sivonen 003 * 004 * Permission is hereby granted, free of charge, to any person obtaining a 005 * copy of this software and associated documentation files (the "Software"), 006 * to deal in the Software without restriction, including without limitation 007 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 008 * and/or sell copies of the Software, and to permit persons to whom the 009 * Software is furnished to do so, subject to the following conditions: 010 * 011 * The above copyright notice and this permission notice shall be included in 012 * all copies or substantial portions of the Software. 013 * 014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 017 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 019 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 020 * DEALINGS IN THE SOFTWARE. 021 */ 022 023 package fi.iki.hsivonen.io; 024 025 import java.io.IOException; 026 import java.io.InputStream; 027 import java.io.Reader; 028 import java.nio.charset.CharacterCodingException; 029 030 /** 031 * @version $Id: NonBufferingAsciiInputStreamReader.java,v 1.2 2005/08/14 07:41:34 hsivonen Exp $ 032 * @author hsivonen 033 */ 034 public class NonBufferingAsciiInputStreamReader extends Reader { 035 private InputStream stream; 036 037 /** 038 * @param arg0 039 */ 040 public NonBufferingAsciiInputStreamReader(InputStream stream) { 041 this.stream = stream; 042 } 043 044 /** 045 * @throws java.io.IOException 046 */ 047 public void close() throws IOException { 048 stream.close(); 049 } 050 /** 051 * @see java.io.Reader#read() 052 */ 053 public int read() throws IOException { 054 int rv = stream.read(); 055 if (rv < 0x80) { 056 return rv; 057 } else { 058 throw new CharacterCodingException(); 059 } 060 } 061 062 /** 063 * @see java.io.Reader#read(char[], int, int) 064 */ 065 public int read(char[] buf, int off, int len) throws IOException { 066 int val = read(); 067 if(val == -1) { 068 return -1; 069 } else { 070 buf[off] = (char) val; 071 return 1; 072 } 073 } 074 075 076 077 }