Как читать текстовый файл непосредственно из Интернета с помощью Java?
Я пытаюсь прочитать некоторые слова из текстового файла в Интернете.
Я попытался сделать что-то вроде этого
File file = new File("http://www.puzzlers.org/pub/wordlists/pocket.txt");
Scanner scan = new Scanner(file);
но это не сработало, я получаю
http://www.puzzlers.org/pub/wordlists/pocket.txt
в качестве вывода, и я просто хочу получить все слова.
Я знаю, что они научили меня этому в тот же день, но я не помню точно, как это сделать сейчас, любая помощь очень ценится.
Ответы
Ответ 1
Используйте URL
вместо File
для любого доступа, который не находится на вашем локальном компьютере.
URL url = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt");
Scanner s = new Scanner(url.openStream());
На самом деле URL-адрес еще более полезен, также для локального доступа (используйте URL file:
), файлы jar и обо всем, что можно каким-то образом получить.
Вышеописанный путь интерпретирует файл в кодировке по умолчанию для платформ. Если вы хотите использовать кодировку, указанную сервером, вы должны использовать URLConnection и проанализировать его тип содержимого, как указано в ответах на этот вопрос.
О вашей ошибке, убедитесь, что ваш файл компилируется без каких-либо ошибок - вам нужно обрабатывать исключения. Нажмите красные сообщения, предоставленные вашей IDE, он должен показать вам рекомендации по его устранению. Не запускайте программу, которая не компилируется (даже если это позволяет IDE).
Здесь с некоторыми примерами обработки исключений:
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.
}
Ответ 2
попробуйте что-то вроде этого
URL u = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt");
InputStream in = u.openStream();
Затем используйте его как любой простой старый входной поток
Ответ 3
Что действительно сработало для меня: (источник: документация оракула "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();
}
}
Ответ 4
Используя 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);
}
}
Ответ 5
Для старого входного потока школы используйте этот код:
InputStream in = new URL("http://google.com/").openConnection().getInputStream();
Ответ 6
Я сделал это следующим образом для изображения, вы должны иметь возможность сделать это для текста, используя аналогичные шаги.
// 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();
Ответ 7
Используйте этот код для чтения интернет-ресурса в 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();
}
Это основано на здесь.
Ответ 8
В качестве альтернативы вы можете использовать объект Guava Resources:
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);