¿Cómo leer un archivo de texto directamente desde Internet usando Java?

Estoy tratando de leer algunas palabras de un archivo de texto en línea.

Intenté hacer algo como esto

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

pero no funcionó, estoy recibiendo

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

como la salida y solo quiero obtener todas las palabras.

Sé que me enseñaron esto en el pasado pero no recuerdo exactamente cómo hacerlo ahora, cualquier ayuda es muy apreciada.

Use una URL lugar de File para cualquier acceso que no esté en su computadora local.

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

En realidad, la URL es incluso más útil en general, también para el acceso local (use un file: URL), archivos jar y sobre todo lo que uno puede recuperar de alguna manera.

La forma anterior interpreta el archivo en la encoding predeterminada de su plataforma. Si desea utilizar la encoding indicada por el servidor, debe usar una URLConnection y analizar su tipo de contenido, como se indica en las respuestas a esta pregunta .


Acerca de su error, asegúrese de que su archivo se comstack sin ningún error, necesita manejar las excepciones. Haga clic en los mensajes rojos proporcionados por su IDE, debería mostrarle una recomendación sobre cómo solucionarlo. No inicie un progtwig que no comstack (incluso si el IDE lo permite).

Aquí con algunos ejemplos de manejo de excepciones:

 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. } 

intenta algo como esto

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

A continuación, úselo como cualquier stream de entrada antigua simple

Lo que realmente funcionó para mí: (fuente: documentación del oracle “lectura de la 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(); } } 

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

Para un flujo de entrada de la vieja escuela, use este código:

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

Lo hice de la siguiente manera para una imagen, debería poder hacerlo para texto usando pasos similares.

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

Use este código para leer un recurso de Internet en una 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(); } 

Esto se basa aquí .

Alternativamente, puede usar el objeto de recursos de Guava :

 URL url = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt"); List lines = Resources.readLines(url, Charsets.UTF_8); lines.forEach(System.out::println);