这是我尝试的代码。
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")));
如果我的网址包含少于一定数量的字符,则可以正常工作,但是当我尝试使用包含150,000个字符的网址链接时,它只会将超过65,000个字符复制到“ NewFile.txt”中。
.openStream可以输入多少个字符有上限吗?我该如何解决?
编辑:我查看了它停止添加到文件的确切字符,我看不到它们的任何独特之处。此时的模式几乎已经确定,并且没有发生错误。
答案 0 :(得分:0)
否,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中的内容可能有些奇怪,请对其进行交叉检查。
答案 1 :(得分:0)
您必须关闭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();