В чем разница между writeBytes(str)
и write(str)
в DataOutputStream
? И есть ли какие-нибудь советы/рекомендации для их использования? Спасибо заранее.writeBytes (str) vs write (str) в DataOutputStream
ответ
DataOutputStream относится к классам OutputStream для записи двоичных данных - не Writer для текста, Это старый класс и writeBytes(String)
является странным способом щебетать как это:
Каждого символ в строке записывается, в последовательности, на отбрасывая свои высокие восемь бит. Если исключение не выбрасывается, записываемый счетчик увеличивается на длину s.
Итак, из каждого символа Юникода UTF-16 (16 бит) берется младший байт. Если строка ограничена 7-битным ASCII, может быть, бит ISO-8859-1, строка не искажается. Но в целом информация теряется.
В DataInputStream нет данных, String readBytes()
.
Я бы назвал это дизайн неудача, так как Java представил separatation из текста и двоичных данных (byte[]
), представляя byte
и резервирование String
и 16-битные char
для текста Unicode. Вероятно, автор почувствовал потребность в стиле C write(char*)
.
Не нужно упоминать writeUTF и DataInputStream.readUTF.
write()
записывает в поток byte[]
, тогда как writeBytes()
записывает вывод yourString.getBytes()
в поток. Если бы нам понадобилась строка из byte[]
, мы могли бы String yourString = new String(yourByteArray);
Как вы можете видеть с помощью String
, это не имеет большого значения, какой подход мы используем, мы можем преобразовать его в правильный объект.
Однако, что, если вы хотите отправить двоичные данные? Вероятно, у вас есть byte[]
или ByteArrayOutputStream
, которые вы можете использовать для прямой записи в поток данных.
В DataOutputStream
, в отношении документации оракула (http://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html) не существует какой-либо метод с именем write(String)
но только write(byte[])
, write(byte[] b, int off, int len)
и write(int b)
. Итак, если у вас есть String
, самый простой способ, который вы можете использовать, - writeBytes(String)
.
Нет никакой разницы между этими методами, используйте только подходящий в соответствии с вашими потребностями (тип объекта, в котором хранятся ваши данные).
- 1. DataOutputStream # writeBytes (String) vs BufferedWriter # write (String)
- 2. Документация на Python (: obj: `str`) vs (str)
- 3. char * str vs char str []: segmentation issue
- 4. array_push vs $ str. = В PHP
- 5. str = str + "abc" медленнее, чем str = "abc" + str?
- 6. Str to str сравнение
- 7. AttributeError: объект 'str' не имеет атрибута 'write'
- 8. Разница между * str [] и str [] []
- 9. Как преобразовать & str в ~ str в Rust?
- 10. Проверьте, принадлежит ли str в списке str?
- 11. Почему `str.reverse == str` быстрее, чем` str [0]! = Str [-1] `?
- 12. str.charAt (5) vs str [5] в Javascript
- 13. Функция str() vs repr() в python 2.7.5
- 14. Почему str [: len (str)/2], но не str [: len (str) * 0.5]?
- 15. Разница между str() и astype (str)?
- 16. Preg_replace str, если сразу не следует str
- 17. Выберите «новый буфер» (str) »и« Buffer.from (str) »
- 18. Как использовать out-str-str с коллекциями?
- 19. str.equals («String») vs «String» .equals (str)
- 20. Когда использовать 'i' vs. 'str [i]'?
- 21. Python Socket Send Buffer Vs. Str
- 22. write() аргумент должен быть str, а не байтами
- 23. Модуль регистрации python AttributeError: объект 'str' не имеет атрибута 'write'
- 24. Кодировка: TypeError: write() аргумент должен быть str, а не байтами
- 25. Nester.py: AttributeError: объект 'str' не имеет значения 'write'
- 26. Что это значит: AttributeError: объект 'str' не имеет атрибута 'write'
- 27. альтернатива `str()` в R
- 28. Преобразование str в int
- 29. Игнорировать str в сумме()
- 30. Функция str() в dataframe
В 'DataOutputStream' нет метода' write (String) ' – August