web-dev-qa-db-ja.com

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 

出力として、すべての単語を取得したいだけです。

私は彼らがそのことを昔に教えてくれたことを知っていますが、今どうやってそれをするのか正確に覚えていません。どんな助けも大歓迎です。

40
randomizertech

ローカルコンピューター上にないアクセスには、URLの代わりにFileを使用します。

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

実際、URLはさらに一般的に便利で、ローカルアクセスにも使用できます(file: URL)、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.
}
59
Paŭlo Ebermann

このようなものを試してください

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

次に、それをプレーンな古い入力ストリームとして使用します

12
hhafez

私にとって本当に役立ったのは:(ソース: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();
}
 }
7
chris

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);
    }
}
4
Jawad

画像に対して次の方法でそれを行いましたが、同様の手順を使用してテキストに対して行うことができるはずです。

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

古い学校の入力ストリームの場合、次のコードを使用します。

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

このコードを使用して、インターネットリソースを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();
}

これは here に基づいています。

1
BullyWiiPlaza

あるいは、 Guava's Resources 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);
0
Matthias Braun