Java 类java.io.PushbackInputStream 实例源码
项目:GitHub
文件:AsyncHttpClient.java
/**
* Checks the InputStream if it contains GZIP compressed data
*
* @param inputStream InputStream to be checked
* @return true or false if the stream contains GZIP compressed data
* @throws java.io.IOException if read from inputStream fails
*/
public static boolean isInputStreamGZIPCompressed(final PushbackInputStream inputStream) throws IOException {
if (inputStream == null)
return false;
byte[] signature = new byte[2];
int count = 0;
try {
while (count < 2) {
int readCount = inputStream.read(signature, count, 2 - count);
if (readCount < 0) return false;
count = count + readCount;
}
} finally {
inputStream.unread(signature, 0, count);
}
int streamHeader = ((int) signature[0] & 0xff) | ((signature[1] << 8) & 0xff00);
return GZIPInputStream.GZIP_MAGIC == streamHeader;
}
项目:incubator-netbeans
文件:DefaultAttributes.java
/** Tests whether InputStream contains serialized data
* @param pbStream is pushback input stream; tests 4 bytes and then returns them back
* @return true if the file has serialized form
*/
static private final boolean isSerialized(PushbackInputStream pbStream)
throws IOException {
int[] serialPattern = { '\u00AC', '\u00ED', '\u0000', '\u0005' }; //NOI18N patern for serialized objects
byte[] checkedArray = new byte[serialPattern.length];
int unsignedConv = 0;
pbStream.read(checkedArray, 0, checkedArray.length);
pbStream.unread(checkedArray);
for (int i = 0; i < checkedArray.length; i++) {
unsignedConv = (checkedArray[i] < 0) ? (checkedArray[i] + 256) : checkedArray[i];
if (serialPattern[i] != unsignedConv) {
return false;
}
}
return true;
}
项目:AndroidAsyncHTTP
文件:AsyncHttpClient.java
/**
* Checks the InputStream if it contains GZIP compressed data
*
* @param inputStream InputStream to be checked
* @return true or false if the stream contains GZIP compressed data
* @throws java.io.IOException if read from inputStream fails
*/
public static boolean isInputStreamGZIPCompressed(final PushbackInputStream inputStream) throws IOException {
if (inputStream == null)
return false;
byte[] signature = new byte[2];
int count = 0;
try {
while (count < 2) {
int readCount = inputStream.read(signature, count, 2 - count);
if (readCount < 0) return false;
count = count + readCount;
}
} finally {
inputStream.unread(signature, 0, count);
}
int streamHeader = ((int) signature[0] & 0xff) | ((signature[1] << 8) & 0xff00);
return GZIPInputStream.GZIP_MAGIC == streamHeader;
}
项目:VASSAL-src
文件:DeobfuscatingInputStream.java
/**
* @param in the stream to wrap
* @throws IOException
*/
public DeobfuscatingInputStream(InputStream in) throws IOException {
super(null);
final byte[] header = new byte[ObfuscatingOutputStream.HEADER.length()];
readFully(in, header, 0, header.length);
if (new String(header, "UTF-8").equals(ObfuscatingOutputStream.HEADER)) {
this.in = new DeobfuscatingInputStreamImpl(in);
}
else {
final PushbackInputStream pin =
new PushbackInputStream(in, header.length);
pin.unread(header);
this.in = pin;
}
}
项目:truevfs
文件:TarInputService.java
/**
* Fills {@code buf} with data from the given input stream and
* returns an input stream from which you can still read all data,
* including the data in buf.
*
* @param in The stream to read from.
* @param buf The buffer to fill entirely with data.
* @return A stream which holds all the data {@code in} did.
* @throws EOFException on unexpected end-of-file.
* @throws IOException on any I/O error.
*/
private static InputStream readAhead(
final @WillNotClose InputStream in,
final byte[] buf)
throws EOFException, IOException {
if (in.markSupported()) {
in.mark(buf.length);
new DataInputStream(in).readFully(buf);
in.reset();
return in;
} else {
final PushbackInputStream
pin = new PushbackInputStream(in, buf.length);
new DataInputStream(pin).readFully(buf);
pin.unread(buf);
return pin;
}
}
项目:javaide
文件:UUDecoder.java
/**
* In uuencoded buffers, encoded lines start with a character that
* represents the number of bytes encoded in this line. The last
* line of input is always a line that starts with a single space
* character, which would be a zero length line.
*/
protected int decodeLinePrefix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int c;
c = inStream.read();
if (c == ' ') {
c = inStream.read(); /* discard the (first)trailing CR or LF */
c = inStream.read(); /* check for a second one */
if ((c != '\n') && (c != -1))
inStream.unread (c);
throw new CEStreamExhausted();
} else if (c == -1) {
throw new CEFormatException("UUDecoder: Short Buffer.");
}
c = (c - ' ') & 0x3f;
if (c > bytesPerLine()) {
throw new CEFormatException("UUDecoder: Bad Line Length.");
}
return (c);
}
项目:javaide
文件:UUDecoder.java
/**
* Find the end of the line for the next operation.
* The following sequences are recognized as end-of-line
* CR, CR LF, or LF
*/
protected void decodeLineSuffix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int c;
while (true) {
c = inStream.read();
if (c == -1) {
throw new CEStreamExhausted();
}
if (c == '\n') {
break;
}
if (c == '\r') {
c = inStream.read();
if ((c != '\n') && (c != -1)) {
inStream.unread (c);
}
break;
}
}
}
项目:T0rlib4Android
文件:ServerAuthenticatorBase.java
/**
* Grants access to everyone.Removes authentication related bytes from the
* stream, when a SOCKS5 connection is being made, selects an authentication
* NONE.
*/
public ServerAuthenticator startSession(Socket s) throws IOException {
final PushbackInputStream in = new PushbackInputStream(s
.getInputStream());
final OutputStream out = s.getOutputStream();
final int version = in.read();
if (version == 5) {
if (!selectSocks5Authentication(in, out, 0)) {
return null;
}
} else if (version == 4) {
// Else it is the request message already, version 4
in.unread(version);
} else {
return null;
}
return new ServerAuthenticatorNone(in, out);
}
项目:OpenJSharp
文件:UUDecoder.java
/**
* Decode a UU atom. Note that if l is less than 3 we don't write
* the extra bits, however the encoder always encodes 4 character
* groups even when they are not needed.
*/
protected void decodeAtom(PushbackInputStream inStream, OutputStream outStream, int l)
throws IOException {
int i, c1, c2, c3, c4;
int a, b, c;
StringBuffer x = new StringBuffer();
for (i = 0; i < 4; i++) {
c1 = inStream.read();
if (c1 == -1) {
throw new CEStreamExhausted();
}
x.append((char)c1);
decoderBuffer[i] = (byte) ((c1 - ' ') & 0x3f);
}
a = ((decoderBuffer[0] << 2) & 0xfc) | ((decoderBuffer[1] >>> 4) & 3);
b = ((decoderBuffer[1] << 4) & 0xf0) | ((decoderBuffer[2] >>> 2) & 0xf);
c = ((decoderBuffer[2] << 6) & 0xc0) | (decoderBuffer[3] & 0x3f);
outStream.write((byte)(a & 0xff));
if (l > 1) {
outStream.write((byte)( b & 0xff));
}
if (l > 2) {
outStream.write((byte)(c&0xff));
}
}
项目:jdk8u-jdk
文件:UUDecoder.java
/**
* Find the end of the line for the next operation.
* The following sequences are recognized as end-of-line
* CR, CR LF, or LF
*/
protected void decodeLineSuffix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int c;
while (true) {
c = inStream.read();
if (c == -1) {
throw new CEStreamExhausted();
}
if (c == '\n') {
break;
}
if (c == '\r') {
c = inStream.read();
if ((c != '\n') && (c != -1)) {
inStream.unread (c);
}
break;
}
}
}
项目:boohee_v5.6
文件:AsyncHttpClient.java
public static boolean isInputStreamGZIPCompressed(PushbackInputStream inputStream) throws
IOException {
boolean z = true;
if (inputStream == null) {
return false;
}
byte[] signature = new byte[2];
int readStatus = inputStream.read(signature);
inputStream.unread(signature);
int streamHeader = (signature[0] & 255) | ((signature[1] << 8) & MotionEventCompat
.ACTION_POINTER_INDEX_MASK);
if (!(readStatus == 2 && 35615 == streamHeader)) {
z = false;
}
return z;
}
项目:GitHub
文件:AsyncHttpClient.java
@Override
public InputStream getContent() throws IOException {
wrappedStream = wrappedEntity.getContent();
pushbackStream = new PushbackInputStream(wrappedStream, 2);
if (isInputStreamGZIPCompressed(pushbackStream)) {
gzippedStream = new GZIPInputStream(pushbackStream);
return gzippedStream;
} else {
return pushbackStream;
}
}
项目:framework
文件:ZipInputStream.java
/**
* Creates a new ZIP input stream.
*
* @param in the actual input stream
*/
public ZipInputStream(InputStream in) {
super(new PushbackInputStream(in, 512), new Inflater(true), 512);
usesDefaultInflater = true;
if (in == null) {
throw new NullPointerException("in is null");
}
}
项目:framework
文件:ZipInputStream.java
private void readEnd(ZipEntry e) throws IOException {
int n = inf.getRemaining();
if (n > 0) {
((PushbackInputStream) in).unread(buf, len - n, n);
}
if ((flag & 8) == 8) {
/* "Data Descriptor" present */
readFully(tmpbuf, 0, EXTHDR);
long sig = get32(tmpbuf, 0);
if (sig != EXTSIG) { // no EXTSIG present
e.crc = sig;
e.csize = get32(tmpbuf, EXTSIZ - EXTCRC);
e.size = get32(tmpbuf, EXTLEN - EXTCRC);
((PushbackInputStream) in).unread(tmpbuf, EXTHDR - EXTCRC - 1, EXTCRC);
} else {
e.crc = get32(tmpbuf, EXTCRC);
e.csize = get32(tmpbuf, EXTSIZ);
e.size = get32(tmpbuf, EXTLEN);
}
}
if (e.size != inf.getBytesWritten()) {
throw new ZipException("invalid entry size (expected " + e.size + " but got " + inf.getBytesWritten() + " bytes)");
}
if (e.csize != inf.getBytesRead()) {
throw new ZipException("invalid entry compressed size (expected " + e.csize + " but got " + inf.getBytesRead() + " bytes)");
}
if (e.crc != crc.getValue()) {
throw new ZipException("invalid entry CRC (expected 0x" + Long.toHexString(e.crc) + " but got 0x" + Long.toHexString(crc.getValue()) + ")");
}
}
项目:mobile-store
文件:NanoHTTPD.java
public HTTPSession(TempFileManager tempFileManager, InputStream inputStream, OutputStream outputStream, InetAddress inetAddress) {
this.tempFileManager = tempFileManager;
this.inputStream = new PushbackInputStream(inputStream, BUFSIZE);
this.outputStream = outputStream;
String remoteIp = inetAddress.isLoopbackAddress() || inetAddress.isAnyLocalAddress() ? "127.0.0.1" : inetAddress.getHostAddress().toString();
headers = new HashMap<String, String>();
headers.put("remote-addr", remoteIp);
headers.put("http-client-ip", remoteIp);
}
项目:Mobike
文件:AsyncHttpClient.java
@Override
public InputStream getContent() throws IOException {
wrappedStream = wrappedEntity.getContent();
pushbackStream = new PushbackInputStream(wrappedStream, 2);
if (isInputStreamGZIPCompressed(pushbackStream)) {
gzippedStream = new GZIPInputStream(pushbackStream);
return gzippedStream;
} else {
return pushbackStream;
}
}
项目:jdk8u-jdk
文件:CharacterDecoder.java
/**
* Decode the text from the InputStream and write the decoded
* octets to the OutputStream. This method runs until the stream
* is exhausted.
* @exception CEFormatException An error has occurred while decoding
* @exception CEStreamExhausted The input stream is unexpectedly out of data
*/
public void decodeBuffer(InputStream aStream, OutputStream bStream) throws IOException {
int i;
int totalBytes = 0;
PushbackInputStream ps = new PushbackInputStream (aStream);
decodeBufferPrefix(ps, bStream);
while (true) {
int length;
try {
length = decodeLinePrefix(ps, bStream);
for (i = 0; (i+bytesPerAtom()) < length; i += bytesPerAtom()) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
}
if ((i + bytesPerAtom()) == length) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
} else {
decodeAtom(ps, bStream, length - i);
totalBytes += (length - i);
}
decodeLineSuffix(ps, bStream);
} catch (CEStreamExhausted e) {
break;
}
}
decodeBufferSuffix(ps, bStream);
}
项目:openNaEF
文件:RealSsh2Socket.java
public PushbackInputStream getInputStream() throws IOException {
if (input == null) {
throw new IOException(
"login session isn't opened or is already closed.");
}
return input;
}
项目:iBase4J-Common
文件:BASE64Encoder.java
private void decodeBuffer(InputStream paramInputStream, OutputStream paramOutputStream) throws IOException {
PushbackInputStream localPushbackInputStream = new PushbackInputStream(paramInputStream);
int j = 0;
while (true) {
try {
int k = bytesPerLine();
int i = 0;
if (i + bytesPerAtom() < k) {
decodeAtom(localPushbackInputStream, paramOutputStream, bytesPerAtom());
j += bytesPerAtom();
i += bytesPerAtom();
continue;
}
if (i + bytesPerAtom() == k) {
decodeAtom(localPushbackInputStream, paramOutputStream, bytesPerAtom());
j += bytesPerAtom();
} else {
decodeAtom(localPushbackInputStream, paramOutputStream, k - i);
j += k - i;
}
} catch (RuntimeException e) {
String.valueOf(j);
break;
}
}
}
项目:android-project-gallery
文件:AsyncHttpClient.java
/**
* Checks the InputStream if it contains GZIP compressed data
*
* @param inputStream InputStream to be checked
* @return true or false if the stream contains GZIP compressed data
* @throws java.io.IOException
*/
public static boolean isInputStreamGZIPCompressed(final PushbackInputStream inputStream) throws IOException {
if (inputStream == null)
return false;
byte[] signature = new byte[2];
int readStatus = inputStream.read(signature);
inputStream.unread(signature);
int streamHeader = ((int) signature[0] & 0xff) | ((signature[1] << 8) & 0xff00);
return readStatus == 2 && GZIPInputStream.GZIP_MAGIC == streamHeader;
}
项目:alfresco-repository
文件:TikaOfficeDetectParser.java
public void parse(InputStream stream,
ContentHandler handler, Metadata metadata,
ParseContext parseContext) throws IOException, SAXException,
TikaException
{
byte[] initial4 = new byte[4];
InputStream wrapped;
// Preserve TikaInputStreams as TikaInputStreams as they require less memory to process
if (stream.markSupported())
{
stream.mark(initial4.length);
IOUtils.readFully(stream, initial4);
stream.reset();
wrapped = stream;
}
else
{
PushbackInputStream inp = new PushbackInputStream(stream, 4);
IOUtils.readFully(inp, initial4);
inp.unread(initial4);
wrapped = inp;
}
// Which is it?
if(initial4[0] == POIFSConstants.OOXML_FILE_HEADER[0] &&
initial4[1] == POIFSConstants.OOXML_FILE_HEADER[1] &&
initial4[2] == POIFSConstants.OOXML_FILE_HEADER[2] &&
initial4[3] == POIFSConstants.OOXML_FILE_HEADER[3])
{
ooxmlParser.parse(wrapped, handler, metadata, parseContext);
}
else
{
ole2Parser.parse(wrapped, handler, metadata, parseContext);
}
}
项目:automat
文件:CharacterDecoder.java
/**
* 145 * Decode the text from the InputStream and write the decoded 146 *
* octets to the OutputStream. This method runs until the stream 147 * is
* exhausted. 148 * @exception CEFormatException An error has occured while
* decoding 149 * @exception CEStreamExhausted The input stream is
* unexpectedly out of data 150
*/
public void decodeBuffer(InputStream aStream, OutputStream bStream) throws IOException {
int i;
@SuppressWarnings("unused")
int totalBytes = 0;
PushbackInputStream ps = new PushbackInputStream(aStream);
decodeBufferPrefix(ps, bStream);
while (true) {
int length;
try {
length = decodeLinePrefix(ps, bStream);
for (i = 0; (i + bytesPerAtom()) < length; i += bytesPerAtom()) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
}
if ((i + bytesPerAtom()) == length) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
} else {
decodeAtom(ps, bStream, length - i);
totalBytes += (length - i);
}
decodeLineSuffix(ps, bStream);
} catch (RuntimeException e) {
break;
}
}
decodeBufferSuffix(ps, bStream);
}
项目:automat
文件:BASE64Encoder.java
private void decodeBuffer(InputStream paramInputStream, OutputStream paramOutputStream) throws IOException {
PushbackInputStream localPushbackInputStream = new PushbackInputStream(paramInputStream);
int j = 0;
while (true) {
try {
int k = bytesPerLine();
int i = 0;
if (i + bytesPerAtom() < k) {
decodeAtom(localPushbackInputStream, paramOutputStream, bytesPerAtom());
j += bytesPerAtom();
i += bytesPerAtom();
continue;
}
if (i + bytesPerAtom() == k) {
decodeAtom(localPushbackInputStream, paramOutputStream, bytesPerAtom());
j += bytesPerAtom();
} else {
decodeAtom(localPushbackInputStream, paramOutputStream, k - i);
j += k - i;
}
} catch (RuntimeException e) {
String.valueOf(j);
break;
}
}
}
项目:prada
文件:StreamTool.java
public static String readLine(PushbackInputStream in) throws IOException {
char buf[] = new char[128];
int room = buf.length;
int offset = 0;
int c;
loop: while (true) {
switch (c = in.read()) {
case -1:
case '\n':
break loop;
case '\r':
int c2 = in.read();
if ((c2 != '\n') && (c2 != -1)) in.unread(c2);
break loop;
default:
if (--room < 0) {
char[] lineBuffer = buf;
buf = new char[offset + 128];
room = buf.length - offset - 1;
System.arraycopy((Object)lineBuffer, 0, (Object)buf, 0, offset);
}
buf[offset++] = (char) c;
break;
}
}
if ((c == -1) && (offset == 0)) return null;
return String.copyValueOf(buf, 0, offset);
}
项目:lams
文件:XmlHeaderAwareReader.java
/**
* Constructs an XmlHeaderAwareReader.
*
* @param in the {@link InputStream}
* @throws UnsupportedEncodingException if the encoding is not supported
* @throws IOException occurred while reading the XML header
* @since 1.3
*/
public XmlHeaderAwareReader(final InputStream in) throws UnsupportedEncodingException, IOException {
final PushbackInputStream[] pin = new PushbackInputStream[]{in instanceof PushbackInputStream
? (PushbackInputStream)in
: new PushbackInputStream(in, 64)};
final Map<String, String> header = getHeader(pin);
version = Double.parseDouble(header.get(KEY_VERSION));
reader = new InputStreamReader(pin[0], header.get(KEY_ENCODING));
}
项目:javaide
文件:CharacterDecoder.java
/**
* Decode the text from the InputStream and write the decoded
* octets to the OutputStream. This method runs until the stream
* is exhausted.
* @exception CEFormatException An error has occured while decoding
* @exception CEStreamExhausted The input stream is unexpectedly out of data
*/
public void decodeBuffer(InputStream aStream, OutputStream bStream) throws IOException {
int i;
int totalBytes = 0;
PushbackInputStream ps = new PushbackInputStream (aStream);
decodeBufferPrefix(ps, bStream);
while (true) {
int length;
try {
length = decodeLinePrefix(ps, bStream);
for (i = 0; (i+bytesPerAtom()) < length; i += bytesPerAtom()) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
}
if ((i + bytesPerAtom()) == length) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
} else {
decodeAtom(ps, bStream, length - i);
totalBytes += (length - i);
}
decodeLineSuffix(ps, bStream);
} catch (CEStreamExhausted e) {
break;
}
}
decodeBufferSuffix(ps, bStream);
}
项目:javaide
文件:UCDecoder.java
/**
* decodeLinePrefix reads the sequence number and the number of
* encoded bytes from the line. If the sequence number is not the
* previous sequence number + 1 then an exception is thrown.
* UCE lines are line terminator immune, they all start with *
* so the other thing this method does is scan for the next line
* by looking for the * character.
*
* @exception CEFormatException out of sequence lines detected.
*/
protected int decodeLinePrefix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int i;
int nLen, nSeq;
byte xtmp[];
int c;
crc.value = 0;
while (true) {
c = inStream.read(tmp, 0, 1);
if (c == -1) {
throw new CEStreamExhausted();
}
if (tmp[0] == '*') {
break;
}
}
lineAndSeq.reset();
decodeAtom(inStream, lineAndSeq, 2);
xtmp = lineAndSeq.toByteArray();
nLen = xtmp[0] & 0xff;
nSeq = xtmp[1] & 0xff;
if (nSeq != sequence) {
throw new CEFormatException("UCDecoder: Out of sequence line.");
}
sequence = (sequence + 1) & 0xff;
return (nLen);
}
项目:javaide
文件:UCDecoder.java
/**
* this method reads the CRC that is at the end of every line and
* verifies that it matches the computed CRC.
*
* @exception CEFormatException if CRC check fails.
*/
protected void decodeLineSuffix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int i;
int lineCRC = crc.value;
int readCRC;
byte tmp[];
lineAndSeq.reset();
decodeAtom(inStream, lineAndSeq, 2);
tmp = lineAndSeq.toByteArray();
readCRC = ((tmp[0] << 8) & 0xFF00) + (tmp[1] & 0xff);
if (readCRC != lineCRC) {
throw new CEFormatException("UCDecoder: CRC check failed.");
}
}
项目:Mobike
文件:AsyncHttpClient.java
/**
* Checks the InputStream if it contains GZIP compressed data
*
* @param inputStream InputStream to be checked
* @return true or false if the stream contains GZIP compressed data
* @throws IOException
*/
public static boolean isInputStreamGZIPCompressed(final PushbackInputStream inputStream) throws IOException {
if (inputStream == null)
return false;
byte[] signature = new byte[2];
int readStatus = inputStream.read(signature);
inputStream.unread(signature);
int streamHeader = ((int) signature[0] & 0xff) | ((signature[1] << 8) & 0xff00);
return readStatus == 2 && GZIPInputStream.GZIP_MAGIC == streamHeader;
}
项目:javaide
文件:UUDecoder.java
/**
* UUencoded files have a buffer suffix which consists of the word
* end. This line should immediately follow the line with a single
* space in it.
*/
protected void decodeBufferSuffix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int c;
c = inStream.read(decoderBuffer);
if ((decoderBuffer[0] != 'e') || (decoderBuffer[1] != 'n') ||
(decoderBuffer[2] != 'd')) {
throw new CEFormatException("UUDecoder: Missing 'end' line.");
}
}
项目:openjdk-jdk10
文件:CompactParseable.java
static private String detectEncoding(PushbackInputStream in) throws IOException {
String encoding = UTF8;
int b1 = in.read();
if (b1 != -1) {
int b2 = in.read();
if (b2 != -1) {
in.unread(b2);
if ((b1 == 0xFF && b2 == 0xFE) || (b1 == 0xFE && b2 == 0xFF))
encoding = UTF16;
}
in.unread(b1);
}
return encoding;
}
项目:OpenJSharp
文件:CharacterDecoder.java
/**
* Decode the text from the InputStream and write the decoded
* octets to the OutputStream. This method runs until the stream
* is exhausted.
* @exception CEFormatException An error has occurred while decoding
* @exception CEStreamExhausted The input stream is unexpectedly out of data
*/
public void decodeBuffer(InputStream aStream, OutputStream bStream) throws IOException {
int i;
int totalBytes = 0;
PushbackInputStream ps = new PushbackInputStream (aStream);
decodeBufferPrefix(ps, bStream);
while (true) {
int length;
try {
length = decodeLinePrefix(ps, bStream);
for (i = 0; (i+bytesPerAtom()) < length; i += bytesPerAtom()) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
}
if ((i + bytesPerAtom()) == length) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
} else {
decodeAtom(ps, bStream, length - i);
totalBytes += (length - i);
}
decodeLineSuffix(ps, bStream);
} catch (CEStreamExhausted e) {
break;
}
}
decodeBufferSuffix(ps, bStream);
}
项目:OpenJSharp
文件:UCDecoder.java
/**
* decodeLinePrefix reads the sequence number and the number of
* encoded bytes from the line. If the sequence number is not the
* previous sequence number + 1 then an exception is thrown.
* UCE lines are line terminator immune, they all start with *
* so the other thing this method does is scan for the next line
* by looking for the * character.
*
* @exception CEFormatException out of sequence lines detected.
*/
protected int decodeLinePrefix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int i;
int nLen, nSeq;
byte xtmp[];
int c;
crc.value = 0;
while (true) {
c = inStream.read(tmp, 0, 1);
if (c == -1) {
throw new CEStreamExhausted();
}
if (tmp[0] == '*') {
break;
}
}
lineAndSeq.reset();
decodeAtom(inStream, lineAndSeq, 2);
xtmp = lineAndSeq.toByteArray();
nLen = xtmp[0] & 0xff;
nSeq = xtmp[1] & 0xff;
if (nSeq != sequence) {
throw new CEFormatException("UCDecoder: Out of sequence line.");
}
sequence = (sequence + 1) & 0xff;
return (nLen);
}
项目:OpenJSharp
文件:UCDecoder.java
/**
* this method reads the CRC that is at the end of every line and
* verifies that it matches the computed CRC.
*
* @exception CEFormatException if CRC check fails.
*/
protected void decodeLineSuffix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int i;
int lineCRC = crc.value;
int readCRC;
byte tmp[];
lineAndSeq.reset();
decodeAtom(inStream, lineAndSeq, 2);
tmp = lineAndSeq.toByteArray();
readCRC = ((tmp[0] << 8) & 0xFF00) + (tmp[1] & 0xff);
if (readCRC != lineCRC) {
throw new CEFormatException("UCDecoder: CRC check failed.");
}
}
项目:FastBootWeixin
文件:WxApiHttpResponse.java
/**
* 装饰一下,返回可以重读的InputStream
*
* @return dummy
* @throws IOException
*/
@Override
public InputStream getBody() throws IOException {
InputStream body = this.delegate.getBody();
if (body == null || body.markSupported() || body instanceof PushbackInputStream) {
return body;
} else if (this.pushbackInputStream == null) {
this.pushbackInputStream = new PushbackInputStream(body, WX_API_ERROR_CODE_END);
}
return this.pushbackInputStream;
}
项目:android-project-gallery
文件:AsyncHttpClient.java
@Override
public InputStream getContent() throws IOException {
wrappedStream = wrappedEntity.getContent();
pushbackStream = new PushbackInputStream(wrappedStream, 2);
if (isInputStreamGZIPCompressed(pushbackStream)) {
gzippedStream = new GZIPInputStream(pushbackStream);
return gzippedStream;
} else {
return pushbackStream;
}
}
项目:OpenJSharp
文件:UUDecoder.java
/**
* UUencoded files have a buffer suffix which consists of the word
* end. This line should immediately follow the line with a single
* space in it.
*/
protected void decodeBufferSuffix(PushbackInputStream inStream, OutputStream outStream) throws IOException {
int c;
c = inStream.read(decoderBuffer);
if ((decoderBuffer[0] != 'e') || (decoderBuffer[1] != 'n') ||
(decoderBuffer[2] != 'd')) {
throw new CEFormatException("UUDecoder: Missing 'end' line.");
}
}
项目:OpenJSharp
文件:CompactParseable.java
static private String detectEncoding(PushbackInputStream in) throws IOException {
String encoding = UTF8;
int b1 = in.read();
if (b1 != -1) {
int b2 = in.read();
if (b2 != -1) {
in.unread(b2);
if ((b1 == 0xFF && b2 == 0xFE) || (b1 == 0xFE && b2 == 0xFF))
encoding = UTF16;
}
in.unread(b1);
}
return encoding;
}
项目:JAVA-
文件:CharacterDecoder.java
/**
* 145 * Decode the text from the InputStream and write the decoded 146 *
* octets to the OutputStream. This method runs until the stream 147 * is
* exhausted. 148 * @exception CEFormatException An error has occured while
* decoding 149 * @exception CEStreamExhausted The input stream is
* unexpectedly out of data 150
*/
public void decodeBuffer(InputStream aStream, OutputStream bStream) throws IOException {
int i;
@SuppressWarnings("unused")
int totalBytes = 0;
PushbackInputStream ps = new PushbackInputStream(aStream);
decodeBufferPrefix(ps, bStream);
while (true) {
int length;
try {
length = decodeLinePrefix(ps, bStream);
for (i = 0; (i + bytesPerAtom()) < length; i += bytesPerAtom()) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
}
if ((i + bytesPerAtom()) == length) {
decodeAtom(ps, bStream, bytesPerAtom());
totalBytes += bytesPerAtom();
} else {
decodeAtom(ps, bStream, length - i);
totalBytes += (length - i);
}
decodeLineSuffix(ps, bStream);
} catch (RuntimeException e) {
break;
}
}
decodeBufferSuffix(ps, bStream);
}
项目:boohee_v5.6
文件:AsyncHttpClient$InflatingEntity.java
public InputStream getContent() throws IOException {
this.wrappedStream = this.wrappedEntity.getContent();
this.pushbackStream = new PushbackInputStream(this.wrappedStream, 2);
if (!AsyncHttpClient.isInputStreamGZIPCompressed(this.pushbackStream)) {
return this.pushbackStream;
}
this.gzippedStream = new GZIPInputStream(this.pushbackStream);
return this.gzippedStream;
}