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.
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.
}
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
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();
}
}
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);
}
}
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();
Verwenden Sie für einen Eingabestrom der alten Schule diesen Code:
InputStream in = new URL("http://google.com/").openConnection().getInputStream();
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 .
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);