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.
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.
}
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
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();
}
}
À 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);
}
}
Pour un flux d'entrée old school, utilisez ce code:
InputStream in = new URL("http://google.com/").openConnection().getInputStream();
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();
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.
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);