2012-07-29 1 views
2

J'ai une question pour vous tous. Je vais pour la vitesse, et j'ai besoin d'utiliser beaucoup cette méthode, donc plus cette méthode est efficace, mieux c'est.Java - La manière la plus efficace de charger du texte à partir du site Web?

Mon code:

private void method(final String name) { 
    final URL url = new URL("http://www.somewebsite.com/blah.php?name=" + name); 
    final BufferedReader in = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream())); 
    final String totalText = in.readLine(); 
    in.close(); 
    //other stuff using the totalText variable 
} 

Cette méthode fonctionne , mais je me demande s'il y a une plus moyen efficace pour que cela fonctionne.

Remarques importantes concernant le code que je lis:

  • Le code source toute du site est seulement une longue ligne.
  • Il y a non Balises HTML avec le code site Web. C'est tout texte brut.
+0

Je me demande ... serait 'totalText = in.readLine();' travailler? Ensuite, je voudrais simplement supprimer la variable 'inputLine' et la boucle' while'? – Confiqure

+0

Si vous êtes sûr que ce sera toujours une ligne, oui. Mais ne devrait pas accélérer autant –

+0

Tout le monde: J'ai révisé mon code. – Confiqure

Répondre

2

1. Si son une ligne de code, comme vous l'avez-vous changé questionnez puis procédez comme suit ... Utilisez uniquement InputStream et Scanner.

final URL url = new URL("http://www.somewebsite.com/blah.php?name=" + name); 
InputStream i = url.openStream(); 
Scanner scan = new Scanner(i); 
final String totalText = scan.nextLine(); 

2. Si les lignes mulitple puis, je vais vous conseiller de ne pas créer un objet String à chaque fois, cause la création d'objet sur le tas est cher.

Ces lignes 2 ci-dessous créeront beaucoup d'objet chaîne sur le tas.

((inputLine = in.readLine()) != null)

totalText += inputLine;

utilisationStringBuilderqui est mutable, et à la fin attribuer à la référence de chaîne en utilisant la méthode toString().

Par exemple:

StringBuilder totalText; 
    String ftotal; 

    while ((inputLine = in.readLine()) != null) { 
    totalText.append(inputLine); 
} 


    ftotal = totalText.toString(); 
+0

De sa question: Le code source entier du site Web est seulement une ligne longue –

+0

@OskarKjellin C'est correct. – Confiqure

+0

@ JavaCoder-1337 pouvez-vous s'il vous plaît préciser qui est correct ..... ?? –

Questions connexes