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

📄 base64.java

📁 处理PDF
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                    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();        }   // end catch        catch( java.lang.ClassNotFoundException e ) {            e.printStackTrace();        }   // 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[ Math.max((int)(file.length() * 1.4),40) ]; // Need max() for math on small files (v2.2.1)            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        /**     * Reads <tt>infile</tt> and encodes it to <tt>outfile</tt>.     *     * @param infile Input file     * @param outfile Output file     * @since 2.2     */    public static void encodeFileToFile( String infile, String outfile ) {        String encoded = Base64.encodeFromFile( infile );        java.io.OutputStream out = null;        try{            out = new java.io.BufferedOutputStream(                    new java.io.FileOutputStream( outfile ) );            out.write( encoded.getBytes("US-ASCII") ); // Strict, 7-bit output.        }   // end try        catch( java.io.IOException ex ) {            ex.printStackTrace();        }   // end catch        finally {            try { out.close(); } catch( Exception ex ){}        }   // end finally    }   // end encodeFileToFile            /**     * Reads <tt>infile</tt> and decodes it to <tt>outfile</tt>.     *     * @param infile Input file     * @param outfile Output file     * @since 2.2     */    public static void decodeFileToFile( String infile, String outfile ) {        byte[] decoded = Base64.decodeFromFile( infile );        java.io.OutputStream out = null;        try{            out = new java.io.BufferedOutputStream(                    new java.io.FileOutputStream( outfile ) );            out.write( decoded );        }   // end try        catch( java.io.IOException ex ) {            ex.printStackTrace();        }   // end catch        finally {            try { out.close(); } catch( Exception ex ){}        }   // end finally    }   // end decodeFileToFile            /* ********  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        private int     options;        // Record options used to create the stream.        private byte[]  alphabet;	    // Local copies to avoid extra method calls        private byte[]  decodabet;		// Local copies to avoid extra method calls                        /**         * 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)

⌨️ 快捷键说明

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