⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base64.java

📁 eq跨平台查询工具源码 eq跨平台查询工具源码
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
     * @since 1.4     */    public static byte[] decode( String s ) {        byte[] bytes;        try {            bytes = s.getBytes( PREFERRED_ENCODING );        }   // end try        catch( java.io.UnsupportedEncodingException uee ) {            bytes = s.getBytes();        }   // end catch        //</change>                // Decode        bytes = decode( bytes, 0, bytes.length );                        // Check to see if it's gzip-compressed        // GZIP Magic Two-Byte Number: 0x8b1f (35615)        if( bytes != null && bytes.length >= 4 ) {                        int head = ((int)bytes[0] & 0xff) | ((bytes[1] << 8) & 0xff00);            if( java.util.zip.GZIPInputStream.GZIP_MAGIC == head ) {                java.io.ByteArrayInputStream  bais = null;                java.util.zip.GZIPInputStream gzis = null;                java.io.ByteArrayOutputStream baos = null;                byte[] buffer = new byte[2048];                int    length = 0;                                try {                    baos = new java.io.ByteArrayOutputStream();                    bais = new java.io.ByteArrayInputStream( bytes );                    gzis = new java.util.zip.GZIPInputStream( bais );                                        while( ( length = gzis.read( buffer ) ) >= 0 ) {                        baos.write(buffer,0,length);                    }   // end while: reading input                                        // No error? Get new bytes.                    bytes = baos.toByteArray();                                    }   // end try                catch( java.io.IOException e ) {                    // Just return originally-decoded bytes                }   // end catch                finally {                    try{ baos.close(); } catch( Exception e ){}                    try{ gzis.close(); } catch( Exception e ){}                    try{ bais.close(); } catch( Exception e ){}                }   // end finally                            }   // end if: gzipped        }   // end if: bytes.length >= 2                return bytes;    }   // end decode                    /**     * Attempts to decode Base64 data and deserialize a Java     * Object within. Returns <tt>null</tt> if there was an error.     *     * @param encodedObject The Base64 data to decode     * @return The decoded and deserialized object     * @since 1.5     */    public static Object decodeToObject( String encodedObject ) {        // Decode and gunzip if necessary        byte[] objBytes = decode( encodedObject );                java.io.ByteArrayInputStream  bais = null;        java.io.ObjectInputStream     ois  = null;        Object obj = null;                try {            bais = new java.io.ByteArrayInputStream( objBytes );            ois  = new java.io.ObjectInputStream( bais );                        obj = ois.readObject();        }   // end try        catch( java.io.IOException e ) {            e.printStackTrace();            obj = null;        }   // end catch        catch( java.lang.ClassNotFoundException e ) {            e.printStackTrace();            obj = null;        }   // end catch        finally {            try{ bais.close(); } catch( Exception e ){}            try{ ois.close();  } catch( Exception e ){}        }   // end finally                return obj;    }   // end decodeObject                /**     * Convenience method for encoding data to a file.     *     * @param dataToEncode byte array of data to encode in base64 form     * @param filename Filename for saving encoded data     * @return <tt>true</tt> if successful, <tt>false</tt> otherwise     *     * @since 2.1     */    public static boolean encodeToFile( byte[] dataToEncode, String filename ) {        boolean success = false;        Base64.OutputStream bos = null;        try {            bos = new Base64.OutputStream(                    new java.io.FileOutputStream( filename ), Base64.ENCODE );            bos.write( dataToEncode );            success = true;        }   // end try        catch( java.io.IOException e ) {                        success = false;        }   // end catch: IOException        finally {            try{ bos.close(); } catch( Exception e ){}        }   // end finally                return success;    }   // end encodeToFile            /**     * Convenience method for decoding data to a file.     *     * @param dataToDecode Base64-encoded data as a string     * @param filename Filename for saving decoded data     * @return <tt>true</tt> if successful, <tt>false</tt> otherwise     *     * @since 2.1     */    public static boolean decodeToFile( String dataToDecode, String filename ) {        boolean success = false;        Base64.OutputStream bos = null;        try {            bos = new Base64.OutputStream(                    new java.io.FileOutputStream( filename ), Base64.DECODE );            bos.write( dataToDecode.getBytes( PREFERRED_ENCODING ) );            success = true;        }   // end try        catch( java.io.IOException e ) {            success = false;        }   // end catch: IOException        finally {            try{ bos.close(); } catch( Exception e ){}        }   // end finally                return success;    }   // end decodeToFile                    /**     * Convenience method for reading a base64-encoded     * file and decoding it.     *     * @param filename Filename for reading encoded data     * @return decoded byte array or null if unsuccessful     *     * @since 2.1     */    public static byte[] decodeFromFile( String filename ) {        byte[] decodedData = null;        Base64.InputStream bis = null;        try {            // Set up some useful variables            java.io.File file = new java.io.File( filename );            byte[] buffer = null;            int length   = 0;            int numBytes = 0;                        // Check for size of file            if( file.length() > Integer.MAX_VALUE ) {                System.err.println( "File is too big for this convenience method (" + file.length() + " bytes)." );                return null;            }   // end if: file too big for int index            buffer = new byte[ (int)file.length() ];                        // Open a stream            bis = new Base64.InputStream(                    new java.io.BufferedInputStream(                    new java.io.FileInputStream( file ) ), Base64.DECODE );                        // Read until done            while( ( numBytes = bis.read( buffer, length, 4096 ) ) >= 0 )                length += numBytes;                        // Save in a variable to return            decodedData = new byte[ length ];            System.arraycopy( buffer, 0, decodedData, 0, length );                    }   // end try        catch( java.io.IOException e ) {            System.err.println( "Error decoding from file " + filename );        }   // end catch: IOException        finally {            try{ bis.close(); } catch( Exception e) {}        }   // end finally                return decodedData;    }   // end decodeFromFile                /**     * Convenience method for reading a binary file     * and base64-encoding it.     *     * @param filename Filename for reading binary data     * @return base64-encoded string or null if unsuccessful     *     * @since 2.1     */    public static String encodeFromFile( String filename ) {        String encodedData = null;        Base64.InputStream bis = null;        try {            // Set up some useful variables            java.io.File file = new java.io.File( filename );            byte[] buffer = new byte[ (int)(file.length() * 1.4) ];            int length   = 0;            int numBytes = 0;                        // Open a stream            bis = new Base64.InputStream(                    new java.io.BufferedInputStream(                    new java.io.FileInputStream( file ) ), Base64.ENCODE );                        // Read until done            while( ( numBytes = bis.read( buffer, length, 4096 ) ) >= 0 )                length += numBytes;                        // Save in a variable to return            encodedData = new String( buffer, 0, length, Base64.PREFERRED_ENCODING );                    }   // end try        catch( java.io.IOException e ) {            System.err.println( "Error encoding from file " + filename );        }   // end catch: IOException        finally {            try{ bis.close(); } catch( Exception e) {}        }   // end finally                return encodedData;    }   // end encodeFromFile                    /* ********  I N N E R   C L A S S   I N P U T S T R E A M  ******** */                /**     * A {@link Base64.InputStream} will read data from another     * <tt>java.io.InputStream</tt>, given in the constructor,     * and encode/decode to/from Base64 notation on the fly.     *     * @see Base64     * @since 1.3     */    public static class InputStream extends java.io.FilterInputStream {        private boolean encode;         // Encoding or decoding        private int     position;       // Current position in the buffer        private byte[]  buffer;         // Small buffer holding converted data        private int     bufferLength;   // Length of buffer (3 or 4)        private int     numSigBytes;    // Number of meaningful bytes in the buffer        private int     lineLength;        private boolean breakLines;     // Break lines at less than 80 characters                        /**         * Constructs a {@link Base64.InputStream} in DECODE mode.         *         * @param in the <tt>java.io.InputStream</tt> from which to read data.         * @since 1.3         */        public InputStream( java.io.InputStream in ) {            this( in, DECODE );        }   // end constructor                        /**         * Constructs a {@link Base64.InputStream} in         * either ENCODE or DECODE mode.         * <p>         * Valid options:<pre>         *   ENCODE or DECODE: Encode or Decode as data is read.         *   DONT_BREAK_LINES: don't break lines at 76 characters         *     (only meaningful when encoding)         *     <i>Note: Technically, this makes your encoding non-compliant.</i>         * </pre>         * <p>         * Example: <code>new Base64.InputStream( in, Base64.DECODE )</code>         *         *         * @param in the <tt>java.io.InputStream</tt> from which to read data.         * @param options Specified options         * @see Base64#ENCODE         * @see Base64#DECODE         * @see Base64#DONT_BREAK_LINES         * @since 2.0         */        public InputStream( java.io.InputStream in, int options ) {            super( in );            this.breakLines   = (options & DONT_BREAK_LINES) != DONT_BREAK_LINES;            this.encode       = (options & ENCODE) == ENCODE;            this.bufferLength = encode ? 4 : 3;            this.buffer   = new byte[ bufferLength ];            this.position = -1;            this.lineLength = 0;        }   // end constructor                /**         * Reads enough of the input stream to convert         * to/from Base64 and returns the next byte.         *         * @return next byte         * @since 1.3         */        public int read() throws java.io.IOException {            // Do we need to get data?            if( position < 0 ) {                if( encode ) {                    byte[] b3 = new byte[3];                    int numBinaryBytes = 0;                    for( int i = 0; i < 3; i++ ) {                        try {                            int b = in.read();                                                        // If end of stream, b is -1.                            if( b >= 0 ) {                                b3[i] = (byte)b;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -