2011-01-28 2 views
3

Я пытаюсь загрузить файл на http-сервер, но сначала мне нужно закодировать его в формате base64. Как мне это сделать? Я открыл соединение с файлом, но я не знаю, как закодировать файл.Кодировать файл в формате Base64 - Blackberry/J2ME

+0

Возможный дубликат [Преобразование массива байтов в base64 для ежевики с использованием Eclipse] (http://stackoverflow.com/questions/3753629/convert-a-byte-array-to-base64-for-blackberry-using-eclipse) –

ответ

-3

Если вы делаете это в Java вы можете использовать BASE64Encoder и записать в новый кодированный файл:

import sun.misc.BASE64Encoder; 

    public static void main(String[] args) throws Exception { 

     File inputFile = new File(yourUnencodedFile); 
     File outputFile = new File(yourEncodedFile); 

     BASE64Encoder encoder = new BASE64Encoder(); 
     encoder.encode(
      new FileInputStream(inputFile), 
      new FileOutputStream(outputFile) 
     ); 

, а затем просто использовать закодированный выходной файл

+3

К сожалению, этот класс недоступен в J2ME –

+2

Этот класс даже не является частью стандарта Java SE, и использование его делает ваше приложение не переносимым даже в разных реализациях Java SE (попробуйте запустить этот код в OpenJDK). А на не-Java SE JVM (т. Е. Java ME или Blackberry) у вас определенно нет доступа к нему. –

+1

Да, я очень сожалею о том, что OP, я видел ярлык Java и отвечал выше себя, и хотя по какой-то причине это делалось на Java (для меня не было более поздних ночных SO-ответов). и @Joachim спасибо, я на самом деле не знал, что пакеты солнца не поддерживались в публичном интерфейсе http://java.sun.com/products/jdk/faq/faq-sun-packages.html, так что спасибо за обучение мне, что – Mike

3

Поскольку BlackBerry является среда J2ME , вы не можете использовать обычные кластеры J2SE, такие как sun.misc.BASE64Encoder, но есть родной класс Base64OutputStream, который должен работать с той же целью. См. Javadocs для получения дополнительной информации.

+1

'sun.misc.BASE64Encoder' ** не ** обычный класс J2SE! –

+0

@Joachim Sauer Это не меняет того факта, что он недоступен на BlackBerry или других устройствах java-me. Марк противопоставляет свой ответ Майку. –

+0

yes, picky picky :) –

3

Этот класс java-me Base64 для кодирования в формате base64.

Дополнительные примеры: koders или это Java и ME сообщение в блоге: Base64 encode-decode in JavaMe.

+2

Хотя на BlackBerry есть классы Base64InputStream и Base64OutputStream (с OS 4.6), которые позволяют вам делать это без использования сторонних классов. В любом случае это сработает. –

+0

FYI, классы Base64InputStream и Base64OutputStream существуют уже давно - начиная с версии 3.6.0 или 4.0.2 - это только новый конструктор Base64OutputStream (с newlineTrigger), который был добавлен в 4.6. –

Смежные вопросы