2015-06-10 4 views
-1

Я использую этот кусок кода:Как напечатать новую строку в строке бросает на ByteBuffer

String v="bla"; 
Charset charset = Charset.forName("UTF-8"); 
CharsetEncoder encoder = charset.newEncoder(); 
ByteBuffer updated =encoder.encode(CharBuffer.wrap(v+"albalb")); 

Отливка работает отлично, и мне удалось напечатать этот ByteBuffer в файл, расположенный в моем облаке. Теперь, я хочу новую строку после того, как v будет напечатано в файле. Я пробовал эти вещи:

  • \r\n
  • \n
  • public static String newline = System.getProperty("line.separator");

Ни один из них не работает для меня. У кого-нибудь есть идея?

+0

Какое литье? Здесь нет кастинга. «Ни один из них не работал» - это не описание проблемы. Пробовал их как? Код? Результат? Исключение? – EJP

ответ

0

Следующий код, похоже, подходит для меня.

String v = "Hello"; 
    Charset charset = Charset.forName("UTF-8"); 
    CharsetEncoder encoder = charset.newEncoder(); 
    ByteBuffer updated =encoder.encode(CharBuffer.wrap(v+"\nWorld!")); 
    String s = new String(updated.array(), "UTF-8"); 
    System.out.println(s); 

Возможно, ошибка лежит где-то в другом месте?

EDIT относительно комментария.

//Client side encoding. 
    String inputString = "Hello\nWorld!"; 
    Charset charset = Charset.forName("UTF-8"); 
    CharsetEncoder encoder = charset.newEncoder(); 
    byte[] encodedBytes = Base64.getEncoder().encode(inputString.getBytes()); 
    ByteBuffer updated = encoder.encode(CharBuffer.wrap(new String(encodedBytes, charset))); 
    String s = new String(updated.array(), charset); 
    System.out.println("Base64 encoded string: " + s); 

    //Server side decoding Base64 
    CharsetDecoder decoder = charset.newDecoder(); 
    CharBuffer decodedBytes = decoder.decode(updated); 
    byte[] decoded = Base64.getDecoder().decode(decodedBytes.toString().getBytes()); 
    String decodedStr = new String(decoded, charset); 
    System.out.println("Base64 decoded string: " + decodedStr); 
+0

Я догадываюсь, что вы печатаете на стандартный вывод .. но когда я пишу буфер в файл, который находится в хранилище движка Google, это не работает для меня .... – davidmoshko

+0

Возможно, попробуйте инкапсулировать данные в Base64 перед передачей Это? Это позволит избежать любых проблем, связанных с санитарией, возможно, одна из процедур ввода-вывода выполняет входную дезинфекцию данных и ищет новые строки или что-то в этом роде. Стоит попробовать. Вы можете использовать Base64 с помощью таких средств, как Apache Commons Codec - https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Base64.html – Fred

+0

можете ли вы написать кусок код, реализующий то, что вы описываете? Я пробовал код, который я нашел, использует Base64, но он печатал мне бессмысленные символы. – davidmoshko