2016-05-06 17 views
1
private static String encodeFileToBase64Binary(String fileName) 
     throws IOException { 

    File file = new File(fileName); 
    byte[] bytes = loadFile(file); 
    byte[] encoded = Base64.encodeBase64(bytes); 
    String encodedString = new String(encoded,StandardCharsets.US_ASCII); 

    return encodedString; 
} 
private static byte[] loadFile(File file) throws IOException { 
    InputStream is = new FileInputStream(file); 

    long length = file.length(); 
    if (length > Integer.MAX_VALUE) { 
     // File is too large 
    } 
    byte[] bytes = new byte[(int)length]; 

    int offset = 0; 
    int numRead = 0; 
    while (offset < bytes.length 
      && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) { 
     offset += numRead; 
    } 

    if (offset < bytes.length) { 
     throw new IOException("Could not completely read file "+file.getName()); 
    } 

    is.close(); 
    return bytes; 
} 

ファイルです:Javaのエンコードは、エンコード文字列の文字列をエンコード</p> <pre><code>String encoded=encodeFileToBase64Binary("file.fmr"); </code></pre> <p>//を取得する//他のエンコードされた文字列と一致するにはBase64文字列に

Rk1SACAyMAAAAAFiAAABQAHgAMUAxQEAAABGNkDZADP/SEC8AD6CSECqAEcGSED+AFJtO0CgAGCKZEC6AGuFZEDgAHz1ZECzAI6HZEENAJluNEBWAJ4ZZEB1AKkTZEECALbuZEA/ALqfSECCALySSECxAMP/ZECIAMURVUAXAN2jGkCnAOD8ZEAoAOWlZEBnAOyhLkCyAP/tZECHAQMSGkD8AQTdZECfASKFGkCHASUaGkA1ASy6ZEDAAS3JZEDPAS7NZEAnATG4ZEDxATzOZEBOAUPLZEBzAVbuGkCAAWF8NEDTAWsxLkDnAXa0LkC/AX2nLkC0AYojIEBMAYvkSEDJAa0fT0CsAbwVIIDqANTsZIDIAPfnZICbAQKHO4D5AR/XZIBlASS7IIEoASbYO4CsAUetLoDvAVXSZIDaAVvDO4EHAWrLZICsAX2fNIDnAYEwNIDQAZKnT4BfAZxtZAAA 

//ファイルからエンコードされた文字列他のソースを使って私はエンコードされた文字列の両方に一致するようにしようとしていた場合

Rk1SACAyMAAAAAFiAAABQAHgAMUAxQEAAABGNkCLACELSEDAADYDZEEYAGFxO0DGAGJ9SEC1AGkCSEA6AHWYVUDJAHp5ZEBEAHwVZECVAJgIZEEaALHrZEB4ALuOZEELAMFqZEEzAM/sNEDRANvwZEBkAN0VZECcAOIAZEEwAOjnLkEvAPXlO0CnAP71ZEB7AQYRNEBdAQ0eZED8ARDhZEDXASXcZECZAS3uGkBoAT4eO0AUAUMxSEA7AUYqZEDxAUnSZECmAVNDO0EIAXDHSEDYAXW7ZEEUAXXKSEEGAYY8IEEhAYrDNEDfAZ81ZEDQAcGqLoEBAC/7O4EGAE7zVYB+AP2QSICEARuLZIBnATUfO4D/ATXaZIDEATjSZIDRATrVZICnATvSNIBTATwnZIARAV1LGoB1AV2oO4CrAV68SIDnAWHGZIB+AWauNICVAX0ySICNAYytO4CJAZorSAAA 

は、私はmissmatchを取得しています。 他のソースから見つかったコード化された文字列と一致するように、base64へのエンコードファイルのメソッドを提案してください。 私はStandardCharsets.UTF_8StandardCharsets.US_ASCIIで試しました。

答えて

7

あなたはすでにapache commons-codecを使用していますので、ファイルを読むためにcommons-ioを追加することをお勧めします。あなたはloadFileは()メソッドを削除し、ちょうど持つことができますその方法:

private static String encodeFileToBase64Binary(String fileName) throws IOException { 
    File file = new File(fileName); 
    byte[] encoded = Base64.encodeBase64(FileUtils.readFileToByteArray(file)); 
    return new String(encoded, StandardCharsets.US_ASCII); 
} 
+0

はご回答いただきありがとうございます。しかし、私はエンコードで同じ結果を得ています。 – user1581768

+0

これをいくつかのファイルと外部Base64エンコーダでテストしました。サンプルファイルを提供できますか? – gfelisberto

+1

に問題があり、Base64.encodeBase64();なぜ解決できないのですか? –

関連する問題