2016-04-21 24 views
0

我無法弄清楚如何引用txt文件中的特定行文本。我需要一個具體的URL列表中的特定圖像,我試圖通過連接URL前綴和來自txt文件中的數字列表的搜索數字來生成URL。我無法弄清楚如何引用txt文件並從行號中獲取字符串。具有多個URL的Java特定圖像下載器

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行,我不能引用我的桌面上的文件和IM不知道如何設置文件路徑到我的桌面?對不起,我不擅長java。

感謝您的任何幫助。

回答

0

從我所瞭解的你不知道如何訪問桌面上的文件。嘗試這樣做:

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

讓我解釋一下。我們使用

System.getProperty("user.name") 

來獲取用戶名,如果你不想使用它,那麼你可以用自己的用戶名替換它。然後我們使用

"\\Desktop\\" 

接取桌面,最後我們添加的

fileName + ".txt" 

訪問,我們希望具有擴展名的文件「.TXT」。