Comment lire un fichier texte directement à partir D'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 ça n'a pas marché, je reçois

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

Comme la sortie et je veux juste obtenir tous les mots.

Je sais qu'ils m'ont enseigné ce retour dans la journée, mais je ne me souviens pas exactement comment le faire maintenant, toute aide est grandement appréciée.

32
demandé sur Matthias Braun 2011-06-07 03:55:13

8 réponses

Utiliser 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 encore plus généralement utile, aussi pour l'accès local (utilisez une URL file:), les fichiers jar, et tout ce que l'on peut récupérer d'une manière ou d'une autre.

La manière ci-dessus interprète le fichier dans l'encodage par défaut de vos plates-formes. Si vous souhaitez utiliser l'encodage indiqué par le serveur à la place, vous devez utiliser une URLConnection et analyser son type de contenu, comme indiqué dans les réponses à 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 comment le réparer. Ne démarrez pas un programme qui ne compile pas (même si L'IDE le permet).

Ici avec un exemple de gestion 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.
}
49
répondu Paŭlo Ebermann 2017-05-23 12:10:43

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 ancien flux d'entrée

10
répondu hhafez 2011-06-07 00:19:13

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();
}
 }
6
répondu chris 2014-11-20 00:30:43

À l'Aide 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);
    }
}
4
répondu Jawad 2017-12-14 21:45:44

Pour un flux d'entrée old school, utilisez ce code:

  InputStream in = new URL("http://google.com/").openConnection().getInputStream();
2
répondu Bohemian 2011-06-07 23:40:26

Je l'ai fait de la manière suivante pour une image, vous devriez pouvoir le faire pour le texte en utilisant des étapes similaires.

// folder & name of image on PC          
File fileObj = new File("C:\\Displayable\\imgcopy.jpg"); 

Boolean testB = fileObj.createNewFile();

System.out.println("Test this file eeeeeeeeeeeeeeeeeeee "+testB);

// image on server
URL url = new URL("http://localhost:8181/POPTEST2/imgone.jpg"); 
InputStream webIS = url.openStream();

FileOutputStream fo = new FileOutputStream(fileObj);
int c = 0;
do {
    c = webIS.read();
    System.out.println("==============> " + c);
    if (c !=-1) {
        fo.write((byte) c);
    }
} while(c != -1);

webIS.close();
fo.close();
2
répondu Alok D 2017-05-21 00:36:10

Utiliser ce code pour lire une ressource Internet dans un 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 ici.

1
répondu BullyWiiPlaza 2016-05-28 12:55:37

Vous pouvez également utiliser les ressources de Goyave objet:

URL url = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt");
List<String> lines = Resources.readLines(url, Charsets.UTF_8);
lines.forEach(System.out::println);
0
répondu Matthias Braun 2016-08-15 13:20:27