2013-03-31 10 views
1

Bonjour, j'essaie de lire un flux d'URL avec un intervalle et de le stocker en tant qu'objet. Cependant, quand j'essaie de l'exécuter, cela me donne cette erreur [Erreur fatale]: 1: 1: Fin prématurée du fichier.Erreur fatale: 1: 1: Fin prématurée du fichier. Erreur lors de la lecture de l'URL

Voici le code: thisUrl est une adresse statique http

url = new URL(thisUrl); 
URLstream = url.openStream(); 
ir = new InputStreamReader(URLstream); 
buff = new BufferedReader(ir); 
String xObject = ""; 

while (buff.ready()) { 
    String temp = buff.readLine(); 
    xObject += temp; 
} 

Après avoir utilisé le flux je vais fermer

URLstream.close(); 
ir.close(); 
buff.close(); 

Répondre

0

Citant la documentation pour le type de retour et la valeur du prêt() méthode

Vrai si le prochain read() est garanti de ne pas bloquer pour l'entrée, false sinon. Notez que renvoyer false ne garantit pas que la lecture suivante bloquera.

Votre prochaine lecture() risque de bloquer le flux. Cela ne signifie pas que vous avez fini de lire le flux. Utilisez ceci à la place.

String temp = null; 
while ((temp = buff.readLine()) != null) { 
    xObject += temp; 
} 
+0

J'ai essayé le code que vous m'avez donné. Je voudrais vous remercier pour votre solution. J'ai essayé plusieurs façons en fermant le flux et même séparé la déclaration. Pourquoi est-ce que le code i causera un blocage sur le flux? (Je suspecte des problèmes de mise en réseau, mais je ne sais pas si j'ai raison sur celui-ci) – user1771844

+0

Pas de problème. Si vous voulez des éclaircissements sur comment ready() et readLine() fonctionnent, n'hésitez pas à poser une autre question. Les gens sur SO vont vous aider. –

Questions connexes