J'essaie de lire quelques mots 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é, j'obtiens
http://www.puzzlers.org/pub/wordlists/pocket.txt
comme sortie et je veux juste obtenir tous les mots.
Je sais qu'ils m'ont appris cela dans la journée, mais je ne me souviens pas exactement comment le faire maintenant, toute aide est grandement appréciée.
Utilisez une URL
au lieu de File
pour tout accès qui ne se trouve 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, y compris pour l'accès local (utilisez une URL file:
), les fichiers jar et pour tout ce que vous pouvez récupérer.
La manière ci-dessus interprète le fichier dans le codage par défaut de votre plate-forme. Si vous souhaitez utiliser le codage indiqué par le serveur, vous devez utiliser une connexion URLConnection et analyser son type de contenu, comme indiqué dans les réponses à à cette question .
À propos de votre erreur, assurez-vous que votre fichier est compilé sans erreur - vous devez gérer les exceptions. Cliquez sur les messages rouges donnés par votre IDE, il devrait vous montrer une solution pour y remédier. Ne démarrez pas un programme qui ne compile pas (même si le 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.
}
essayez quelque chose comme ça
URL u = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt");
InputStream in = u.openStream();
Puis utilisez-le comme n'importe quel ancien flux d'entrée
Ce qui a vraiment fonctionné pour moi: (source: documentation Oracle "URL de lecture")
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();
}
}
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);
}
}
Je l'ai fait de la manière suivante pour une image, vous devriez pouvoir le faire pour du 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();
Pour un flux d'entrée old school, utilisez ce code:
InputStream in = new URL("http://google.com/").openConnection().getInputStream();
Utilisez ce code pour lire une ressource Internet dans une 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 .
Alternativement, vous pouvez utiliser Ressources de Guava object:
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);