- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我一直在谷歌搜索如何下载图像,但没有得到很好的书面解释,只有代码示例。我不完全理解这段代码,主要是
for (int b; (b = is.read()) != -1;) {
os.write(b);
}
有人可以像我五岁一样解释上面的代码,以及此方法的任何替代方法。
编辑2
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Downloader {
static String path = "C:\\reddit\\";
public static void main(String[] args) {
connect();
}
private static void download(String imageURL, int i) {
InputStream is = null;
OutputStream os = null;
try {
URL url = new URL(imageURL);
is = url.openStream();
os = new FileOutputStream(path + i + ".jpg");
for (int b; (b = is.read()) != -1;) {
os.write(b);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void connect() {
try {
Document doc = Jsoup.connect("http://www.reddit.com/r/pics").get();
Elements url = doc.select("a");
int i = 0;
for (Element img : url) {
if (img.attr("href").startsWith("http://imgur.com/")) {
String image = img.attr("abs:href")+".jpg";
System.out.println(image);
i++;
System.out.println(i);
download(image, i);
}
}
} catch (IOException e) {
System.out.println("page scrape fail");
}
}
}
编辑我注意到我的输出不正确,它的书写重复,我将发布我的控制台结果
http://imgur.com/f7rW2Of
1
http://imgur.com/f7rW2Of
2
http://imgur.com/35jpkez
3
http://imgur.com/35jpkez
4
http://imgur.com/IX9HMJG
5
http://imgur.com/IX9HMJG
6
http://imgur.com/B6MoDbT
7
http://imgur.com/B6MoDbT
8
http://imgur.com/XMtCUY9
9
http://imgur.com/XMtCUY9
10
http://imgur.com/UkbbiBl
11
http://imgur.com/UkbbiBl
12
http://imgur.com/YfLsCal
13
http://imgur.com/YfLsCal
14
http://imgur.com/9Q3CJtT
15
http://imgur.com/9Q3CJtT
16
http://imgur.com/Vt7sWTf
17
http://imgur.com/Vt7sWTf
18
http://imgur.com/hBUH5kS
19
http://imgur.com/hBUH5kS
20
http://imgur.com/gallery/OWQH0h6
21
http://imgur.com/gallery/OWQH0h6
22
http://imgur.com/a/hiJXI
23
http://imgur.com/a/hiJXI
24
最佳答案
您需要close()
您的OutputStream os
和InputStream is
;我将进行以下编辑 -
private static void download(String imageURL) {
OutputStream os = null; // <-- Move reference here.
InputStream is = null;
try {
URL url = new URL(imageURL);
is = url.openStream();
os = new BufferedOutputStream(new FileOutputStream(
path+"1"));
for (int b; (b = is.read()) != -1;) {
os.write(b);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close(); // <-- Call close on InputStream.
} catch (Exception e) {
}
}
if (os != null) {
try {
os.close(); // <-- Call close on OutputStream.
} catch (Exception e) {
}
}
}
}
关于java - 从 reddit 下载图像时出现 java 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20712223/
Reddit 对于热门帖子有不同的存储桶。他们有“此时”、“今天”、“本周”、“本月”、“今年”、“所有时间”。我能想到的创建这些列表的最佳方法是用时间戳保存每个投票,以便您可以计算每个存储桶的帖子分
我正在尝试使用 praw.reddit 命令抓取 Reddit,但我不断收到以下信息: prawcore.exceptions.OAuthException: unauthorized_client
我正在尝试使用 praw.reddit 命令抓取 Reddit,但我不断收到以下信息: prawcore.exceptions.OAuthException: unauthorized_client
我正在使用 passport-reddit 在我的 node.js 网络服务器上实现 Reddit 登录系统。我现有的系统返回我需要的用户的所有信息,除了他们的电子邮件地址。我想知道社区中是否有人知道
我一直在查看REDDIT api文档,仅通过查看它,似乎无法(?)向另一个Reddit用户发送PM消息。请证明我错了:) 是否可以看到其他用户的 subredddit 订阅? 感谢您提供任何意见。 最
我正在尝试获取帖子上的 self.text 并使用此路线: reddit('/r/Denmark/comments/2jc5yk/how_to_live_in_denmark.json').listi
是否可以通过URL发布指向Reddit的链接? 例如,对于Facebook,您可以 Share Stackoverflow on your profile! Reddit是否具有我可以点击以共
我知道有一种方法可以将链接发布到reddit。 https://www.reddit.com/r/test/submit?title=myTitle&url=http://www.exampledsf
我正在尝试使用 Snoocore 库以编程方式向 Reddit 发布评论。 这是我的代码: function postComment() { var commentText =
我正在制作一个自动回复机器人,该机器人扫描给定命令的r/所有提交评论,例如。 !命令 当它检测到此命令时,将使用字符串回复注释: eg. "Hello" 我得到的错误是新帐户有一个限制,即新帐户每10
我正在尝试获取特定文章的所有 reddit 评论。 在 Reddit API 页面上,似乎暗示: www.reddit.com/r/subreddit/comments/ARTICLE 会给我这些结果
我正在使用 chrome 开发人员工具查看代码,并尝试在我的网站上模拟它,但它的工作方式不同。 显然通过设置边距:0;,边距被删除,但边距在技术上不需要为负数就没有空间了吗? 我没有在 css 格式中
当你点击 reddit 注册按钮时,一个漂亮的窗口弹出,屏幕的其余部分变黑。您可以单击屏幕的其余部分以关闭弹出窗口。 我知道我可以为此使用最外层的 div,但 reddit 是这样做的吗?他们是否也在
Reddit 使用时间衰减算法。这意味着排序顺序可能会发生变化。当用户转到第 2 页时,是否有一种机制可以防止他们看到位于第 1 页但在翻页之前被跳到第 2 页的帖子?这只是排序方法的一个可接受的缺陷
我四处搜寻,找不到有同样问题的人,所以希望这不是多余的。 我试图让 chrome 扩展在每次 Reddit 增强套件加载新页面时修改 DOM(永无休止的自动滚动或其他内容)。 window.addEv
reddit 预览 gif 和图像。我厌倦了发布我的一些页面,但当添加了 html/javascript 时,reddit 不会预览我的 gif。然后我粘贴了一个imgur链接this is te i
我们有一个类似reddit的PHP网站,用户可以为故事投票。 我们尝试在网站上使用 APC、memcached 等,但我们放弃了。问题是我们想要使用缓存机制,但用户可以在网站上随时投票,并且缓存的数据
我有一个接收 Reddit 评论并吐出回复的功能。我希望此函数映射到 Reddit 上发布的每条新评论。 我应该如何从 reddit 获取评论?经常拉取 100 条最近的评论似乎有点浪费,这样就不会遗
我正在尝试异步(或延迟加载)此 Reddit 小部件,但遇到问题。 下面是直接在 html 中完美运行的基本代码: 如果我尝试将其移至我的 scripts.js 中执行其他 jQuery 内
背景:我目前正在使用 praw 制作 Reddit 机器人。 Python 3.7 的库。我的机器人需要做的一件事是检查某些 Reddit 子版 block 上的最新帖子,看看它们是否仅包含图像而没有
我是一名优秀的程序员,十分优秀!