wake-up-neo.com

Wie lese ich eine Textdatei mit Java direkt aus dem Internet?

Ich versuche, einige Wörter aus einer Online-Textdatei zu lesen.

Ich habe so etwas versucht

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

aber es hat nicht funktioniert, ich bekomme 

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

als die Ausgabe und ich möchte nur alle Wörter bekommen.

Ich weiß, dass sie mir das damals beigebracht haben, aber ich kann mich nicht genau erinnern, wie ich es jetzt machen soll. Jede Hilfe wird sehr geschätzt.

36
randomizertech

Verwenden Sie eine URL anstelle von File für jeden Zugriff, der sich nicht auf Ihrem lokalen Computer befindet.

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

Eigentlich ist URL sogar allgemeiner nützlich, auch für den lokalen Zugriff (verwenden Sie eine file:-URL), JAR-Dateien und alles, was man irgendwie abrufen kann.

Der Weg oben interpretiert die Datei in der Standardcodierung Ihrer Plattform. Wenn Sie stattdessen die vom Server angegebene Codierung verwenden möchten, müssen Sie eine URLConnection verwenden und den Inhaltstyp analysieren, wie in den Antworten auf diese Frage angegeben.


Vergewissern Sie sich über Ihren Fehler, dass Ihre Datei ohne Fehler kompiliert wird. Sie müssen die Ausnahmen behandeln. Klicken Sie auf die roten Meldungen, die von Ihrer IDE ausgegeben werden. Sie sollten eine Empfehlung anzeigen, wie Sie diese beheben können. Starten Sie kein Programm, das nicht kompiliert werden kann (auch wenn IDE dies erlaubt).

Hier mit einigen Beispielen für die Behandlung von Ausnahmen:

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.
}
55
Paŭlo Ebermann

versuche so etwas 

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

Verwenden Sie es dann als einfachen alten Eingabestrom

11
hhafez

Was für mich wirklich funktioniert hat: (Quelle: Oracle-Dokumentation "Url lesen")

 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();
}
 }
7
chris

Verwendung von 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
Jawad

Ich habe das auf folgende Weise für ein Bild gemacht, Sie sollten es in der Lage sein, Text mit ähnlichen Schritten auszuführen.

// 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
Alok D

Verwenden Sie für einen Eingabestrom der alten Schule diesen Code:

  InputStream in = new URL("http://google.com/").openConnection().getInputStream();
2
Bohemian

Verwenden Sie diesen Code, um eine Internetressource in eine String zu lesen:

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();
}

Dies basiert auf hier .

1
BullyWiiPlaza

Alternativ können Sie Guavas Ressourcen Objekt verwenden:

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
Matthias Braun