47 votes

Comment lire un fichier texte directement depuis Internet en utilisant Java ?

J'essaie de lire quelques mots à partir d'un fichier texte en ligne.

J'ai essayé de faire quelque chose comme ça

File file = new File("http://www.puzzlers.org/pub/wordlists/pocket.txt");
Scanner scan = new Scanner(file);

mais cela n'a pas fonctionné, j'obtiens

http://www.puzzlers.org/pub/wordlists/pocket.txt 

comme sortie et je veux juste obtenir tous les mots.

Je sais qu'on m'a enseigné cela à l'époque, mais je ne me souviens pas exactement comment faire maintenant, toute aide est la bienvenue.

71voto

Paŭlo Ebermann Points 35526

Utilisez un URL au lieu de File pour tout accès qui n'est pas sur votre ordinateur local.

URL url = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt");
Scanner s = new Scanner(url.openStream());

En fait, l'URL est même plus généralement utile, également pour l'accès local (utilisez un file: URL), les fichiers jar, et à peu près tout ce que l'on peut récupérer d'une manière ou d'une autre.

La méthode ci-dessus interprète le fichier dans l'encodage par défaut de votre plateforme. Si vous souhaitez utiliser l'encodage indiqué par le serveur, vous devez utiliser une URLConnection et analyser son type de contenu, comme indiqué dans les réponses aux questions suivantes cette question .


A propos de votre erreur, assurez-vous que votre fichier compile sans aucune erreur - vous devez gérer les exceptions. Cliquez sur les messages rouges donnés par votre IDE, il devrait vous montrer une recommandation pour corriger l'erreur. Ne lancez pas un programme qui ne compile pas (même si l'IDE le permet).

Voici quelques exemples de traitement des exceptions :

try {
   URL url = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt");
   Scanner s = new Scanner(url.openStream());
   // read from your scanner
}
catch(IOException ex) {
   // there was some connection problem, or the file did not exist on the server,
   // or your URL was not in the right format.
   // think about what to do now, and put it here.
   ex.printStackTrace(); // for now, simply output it.
}

13voto

hhafez Points 13240

Essayez quelque chose comme ceci

 URL u = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt");
 InputStream in = u.openStream();

Ensuite, utilisez-le comme n'importe quel flux d'entrée ordinaire

9voto

chris Points 81

Ce qui a vraiment fonctionné pour moi : (source : documentation oracle "reading url")

 import java.net.*;
 import java.io.*;

 public class UrlTextfile {
public static void main(String[] args) throws Exception {

    URL oracle = new URL("http://yoursite.com/yourfile.txt");
    BufferedReader in = new BufferedReader(
    new InputStreamReader(oracle.openStream()));

    String inputLine;
    while ((inputLine = in.readLine()) != null)
        System.out.println(inputLine);
    in.close();
}
 }

6voto

Jawad Points 181

Utilisation de Apache Commons IO :

import org.apache.commons.io.IOUtils;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public static String readURLToString(String url) throws IOException
{
    try (InputStream inputStream = new URL(url).openStream())
    {
        return IOUtils.toString(inputStream, StandardCharsets.UTF_8);
    }
}

3voto

BullyWiiPlaza Points 5382

Utilisez ce code pour lire une ressource Internet dans un fichier de données. String :

public static String readToString(String targetURL) throws IOException
{
    URL url = new URL(targetURL);
    BufferedReader bufferedReader = new BufferedReader(
            new InputStreamReader(url.openStream()));

    StringBuilder stringBuilder = new StringBuilder();

    String inputLine;
    while ((inputLine = bufferedReader.readLine()) != null)
    {
        stringBuilder.append(inputLine);
        stringBuilder.append(System.lineSeparator());
    }

    bufferedReader.close();
    return stringBuilder.toString().trim();
}

Ceci est basé sur aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X