具有多个URL的Java特定图像下载程序

时间:2016-04-21 17:04:33

标签: java eclipse image web text-files

我无法弄清楚如何在txt文件中引用特定的文本行。我需要一个特定的URL列表中的特定图像,我试图通过连接一个txt文件中的数字列表中的URL前缀和搜索号来生成URL。我无法弄清楚如何引用txt文件并从行号中获取字符串。

package getimages;
public class ExtractAllImages {

public static int url_to_get = 1;
public static String urlupc;
public static String urlpre = "http://urlineedimagefrom/searchfolder/";
public static String url2 = "" + urlpre + urlupc + "";

 public static void main(String args[]) throws Exception {

        while(url_to_get > 2622){

        String line =     Files.readAllLines(Paths.get("file_on_my_desktop.txt")).get(url_to_get);
        urlupc = line;
        url2 = "" + urlpre + urlupc + "";

        String webUrl = url2;
        URL url = new URL(webUrl);
        URLConnection connection = url.openConnection();
        InputStream is = connection.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        HTMLEditorKit htmlKit = new HTMLEditorKit();
        HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
        HTMLEditorKit.Parser parser = new ParserDelegator();
        HTMLEditorKit.ParserCallback callback = htmlDoc.getReader(0);

        parser.parse(br, callback, true);

        for (HTMLDocument.Iterator iterator = htmlDoc.getIterator(HTML.Tag.IMG); iterator.isValid(); iterator.next()) {

            AttributeSet attributes = iterator.getAttributes();
            String imgSrc = (String) attributes.getAttribute(HTML.Attribute.SRC);

            if (imgSrc != null && (imgSrc.endsWith(".jpg") || (imgSrc.endsWith(".png")) || (imgSrc.endsWith(".jpeg")) || (imgSrc.endsWith(".bmp")) || (imgSrc.endsWith(".ico")))) {
                try {
                    downloadImage(webUrl, imgSrc);
                } catch (IOException ex) {
                    System.out.println(ex.getMessage());
                }
            }
        }
    }
 }

 public static String right(String value, int length) {
     return value.substring(value.length() - length);}

 private static void downloadImage(String url, String imgSrc) throws IOException {
        BufferedImage image = null;
        try {
            if (!(imgSrc.startsWith("http"))) {
                url = url + imgSrc;
            } else {
                url = imgSrc;
            }
            String webUrl = url2;
            String imagename = right(webUrl , 12);
            imgSrc = imgSrc.substring(imgSrc.lastIndexOf("/") + 1);
            String imageFormat = null;
            imageFormat = imgSrc.substring(imgSrc.lastIndexOf(".") + 1);
            String imgPath = null;
            imgPath = "C:/Users/Noah/Desktop/photos/" + urlupc + ".jpg";
            URL imageUrl = new URL(url);
            image = ImageIO.read(imageUrl);
            if (image != null) {
                File file = new File(imgPath);
                ImageIO.write(image, imageFormat, file);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }
}

我的错误是设置字符串行,我的txt文件有2622行,我无法在我的桌面上引用该文件,我不知道如何设置文件路径到我的桌面?对不起,我不擅长java。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

根据我的理解,您不知道如何访问桌面上的文件。试着这样做:

String path = "C:\\Users\\" + System.getProperty("user.name")  + "\\Desktop\\" + fileName + ".txt";

让我解释一下。我们正在使用

System.getProperty("user.name")

获取用户名称,如果您不想使用它,则可以将其替换为您的用户名。然后我们正在使用

"\\Desktop\\"

访问桌面,最后我们添加了

fileName + ".txt"

访问我们想要的具有扩展名' .txt'。

的文件