首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网页下载器

网页下载器
EN

Code Review用户
提问于 2012-05-02 20:35:19
回答 1查看 332关注 0票数 10

我想下载一个网页。我确认了这段代码有效。但我不确定我是否做得很整齐。你能检查一下我的(完整)代码吗?

代码语言:javascript
复制
import java.io.IOException;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.net.URL;

public class GetHTML {
    private InputStream in;
    private FileOutputStream out;
    private String articleName;

    public void setArticleName(String articleName) {
        this.articleName = articleName;
    }

    public void download(URL url) throws IOException {
        in = url.openStream();
        out = new FileOutputStream(articleName + ".html");
        byte[] arr = new byte[1024];
        while(true) {
            int count = in.read(arr);
            if(count == -1) { break; }
            out.write(arr, 0, count);
        }
        in.close();
        out.close();
    }

    public static void main(String[] args) throws IOException {
        String site1 = "http://codereview.stackexchange.com/questions/";
        String site2 = "69";
        String site3 = "is-this-implementation-of-shamos-hoey-algorithm-ok";
        URL url = new URL(site1 + site2 + "/" + site3);
        GetHTML getHTML = new GetHTML();

        getHTML.setArticleName("[" + site2 + "]" + site3);
        getHTML.download(url);
    }
}
EN

回答 1

Code Review用户

回答已采纳

发布于 2012-05-02 21:08:35

  1. 在清洁代码中,第25页:类和对象应该有名词或名词短语名称,如CustomerWikiPageAccountAddressParser。...类名不应该是动词。例如,我可以简单地将它命名为ArticleDownloader
  2. 私有InputStream in;私有FileOutputStream out;这些可以在下载方法中使用:公共空下载( url)抛出IOException { final InputStream in = url.openStream();OutputStream out =新FileOutputStream(articleName + ".html");参考:有效的OutputStream,第2版,第45项:最小化局部变量的范围。
  3. FileOutputStream out可能只是OutputStream类型。(有效Java,第二版,第52项:通过接口引用对象)
  4. Commons有一个执行复制的方法:IOUtils.copy(InputStream input, OutputStream output) throws IOException。(有效Java,第二版,第47项:了解和使用图书馆)
  5. 我将删除setArticleName方法和articleName字段(因为没有其他方法使用该字段),并将其直接传递给download方法:公共空下载( url,最终字符串articleName)抛出IOException {.}
  6. 我会将main方法移动到一个单独的类中。(例如,DownloaderMain.)将类与其客户端分离通常是一个好主意。
  7. 关闭finally块中的流。(有效Java,第二版,第7项:避免终结器)
票数 15
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/11418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档