如何使用 Java 直接从 Internet 读取文本文件?

新手上路,请多包涵

我正在尝试从在线文本文件中读取一些单词。

我试着做这样的事情

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

作为输出,我只想得到所有的单词。

我知道他们以前教过我这个,但我现在不记得到底该怎么做,非常感谢任何帮助。

原文由 randomizertech 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 733
2 个回答

对于不在本地计算机上的任何访问,请使用 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.
}

原文由 Paŭlo Ebermann 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试这样的事情

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

然后将其用作任何普通的旧输入流

原文由 hhafez 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题