Чтение удаленного XML-файла - PullRequest
0 голосов
/ 15 июля 2011

Я хочу прочитать XML-файл, который отсутствует в удаленном местоположении. Я использую следующий код

URL url = new URL(myurl);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
String strOutput = "";
System.out.println("start now");
//my code hangs after  priting start now            
while ((inputLine = in.readLine()) != null) {
       strOutput = strOutput + inputLine;
}

//contol doesnot reach here sometimes
in.close();

Это хороший способ чтения удаленного файла. Что такое медленная сеть? Пожалуйста, предложите

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Комментарии уже указали, что есть некоторые плохие практики. Я попытаюсь перечислить, что может быть причиной плохой работы:

  • Использование readLine(). Предполагается, что файл XML содержит несколько строк, каждая из которых заканчивается либо \r\n, \r или \n. Этого не должно быть, в результате возникает сценарий, в котором readLine() займет некоторое время.
  • Объединение String объектов. Строки неизменны в Java. Конкатенация строк создаст новый объект String, и это может стать дорогостоящим, если размер результирующей строки достаточно велик. Если размер вашего документа варьируется от нескольких байтов до килобайта, это может не быть проблемой, но если он сталкивается с мегабайтами, вы напрашиваетесь на неприятности. Вместо этого используйте StringBuilder или StringBuffer.
  • Допущения относительно производительности сети. Может быть, лучше получить файл и проанализировать его, а не открывать соединение, буферизировать его содержимое и затем анализировать его. Сеть может просто не отвечать на ваши запросы о своевременном чтении файла. Предварительная загрузка файла позволяет избежать попадания в сеть на каждом readLine(), который потребует чтения за пределами буферизованного содержимого.
0 голосов
/ 15 июля 2011

Почему бы вам не рассмотреть возможность использования JAXB или других программ чтения XML, которые оптимизированы для чтения файлов XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...