2013-03-19 5 views
3

Я пытаюсь вывести массив байтов в файл. Строка, которую я создаю, отображается правильно, когда я вызываю System.out.println (ouput_stream). Hover, он не выводится правильно, когда я использую FileOutputStream. Вот что у меня есть до сих пор. Какие-либо предложения?Вывод байта [] в файл .txt

FileOutputStream fos = new FileOutputStream("outputFile.txt"); 
OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8"); 

String received_string = new String(rPacket.getData(), 0, rPacket.getLength(), "UTF-8"); 

System.out.println(received_string); 
out.write(received_string, 0, received_string.length()); 

Консоль отображает информацию информацию, когда я называю System.out.println (received_string. Однако, это не выводит файл правильно. Я задал подобный вопрос ранее, но теперь борюсь на выход. Спасибо за любую помощь.

+2

Байты - это не текст. Что вы хотите отобразить? – SLaks

+1

Вы хотите вывести байт [] или строку? – Thilo

+2

Вы говорите: «он не выводит файл правильно». Что содержит файл после закрытия записи? – NovaDenizen

ответ

0

Ваш код выглядит немного странно (вы хотите байт или строк), но должно быть в порядке.

Что вы нашли в файле? вы закрыли поток/записи прежде чем смотреть на него? Если нет, он, вероятно, все еще буферизуется где-то.

Попробуйте избежать преобразования в String, хотя, если вы действительно хотите просто передать этот пакет в файл.

-1

Попробуйте использовать BufferedWriter ..

BufferedWriter writer = new BufferedWriter(new FileWriter("outfile")); 
writer.write(received_string); 
+0

Использование 'FileWriter' только ухудшит его, поскольку использует стандартную кодировку платформы, где OP хочет использовать UTF-8. – EJP

0

Не используйте строку или Writer на всех. Просто скопируйте байты непосредственно из пакета в файл:

fos.write(rPacket.getData(), rPacket.getOffset(), rPacket.getLength()); 

Тогда вы не можете повредить данные.

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