Один принимает InputStream
(ориентированный на байты), а другой - Reader
(ориентированный на символы).Методы предоставлены больше для удобства.В некоторых случаях у вас есть InputStream
, а в других - Reader
, и принудительное преобразование в определенный тип является обременительным, в то время как базовая библиотека XML, используемая эталонной реализацией набора строк, может справиться с любой из них просто отлично.Так что предлагать оба - просто дешево и удобно.
Я не уверен, почему вы думаете, InputStream
будет быстрее, чем читатель.Что быстрее, в значительной степени зависит от фактического типа потока или читателя (например, буферизованный или нет).Поскольку XML является символьно-ориентированным форматом, вероятно, использование Reader
имеет небольшое преимущество, но я был бы удивлен, если бы это было заметным отличием по сравнению с буферизованным и небуферизованным.
Итак, короче говоря, причина того, что оба метода существуют, заключается в удобстве, а не в производительности.
Например, если у меня уже есть строка со значением, то создание StringReader
болееудобнее, чем пытаться получить InputStream
, используя ByteArrayInputStream
.