Java openStream 方法字符限制?



这是我尝试过的代码。

Files.deleteIfExists(Paths.get("NewFile.txt"));
URL smallURL = new URL(url);
Files.copy(smallURL.openStream(), Paths.get("NewFile.txt"));
System.out.println(Files.size(Paths.get("NewFile.txt")));

如果我的 url 少于一定数量的字符,它可以正常工作,但是当我尝试使用 150,000 个字符的 url 链接时,它只会将大约 65,000 个字符复制到"NewFile.txt"中。

您可以输入多少个字符有上限 .openStream 吗?我该如何解决这个问题?

编辑:我查看了它停止添加到文件中的确切字符,但我没有注意到它们的任何独特之处。该点的模式几乎可以肯定已经发生,没有发生错误。

不,InputStream 上没有这样的限制。(顾名思义它是一个流式 API,它以流式方式读取数据(

URL url = new URL("https://en.wikipedia.org/wiki/Microsoft");
Files.copy(url.openStream(), Paths.get("NewFile.txt"));
System.out.println(Files.size(Paths.get("NewFile.txt")));

这打印 - 547055

我怀疑您正在使用的 URL 中的内容可能有些奇怪,请交叉检查它。

你必须关闭 URLConnection 的 InputStream:

Files.deleteIfExists(Paths.get("NewFile.txt"));
URL smallURL = new URL(url);
InputStream is = smallURL.openStream();
Files.copy(is, Paths.get("NewFile.txt"));
System.out.println(Files.size(Paths.get("NewFile.txt")));
is.close();

最新更新