由于notepad++里面的文字處理有些復雜,我在想能不能用一個Java程序來統一處理呢?
嘗試了一下,發現不太復雜,Java果然處理各種事情都比較方便。程序如下:
注意在regexp里面,必須用四個反斜杠\代表一個反斜杠
package?com.pwc; import?java.io.BufferedReader; import?java.io.ByteArrayOutputStream; import?java.io.DataInputStream; import?java.io.File; import?java.io.FileInputStream; import?java.io.FileOutputStream; import?java.io.IOException; import?java.io.InputStreamReader; import?java.net.URL; import?java.util.ArrayList; import?java.util.regex.Matcher; import?java.util.regex.Pattern; public?class?WechatMomentDownload?{ ???? ????public?static?String?jsonFile?=?"C:Downloadexported_sns_gary.json"; ????public?static?String?outputFolder?=?"C:Downloadgary_pic"; ????public?static?void?main(String[]?args)?throws?IOException?{ ????????BufferedReader?reader?=?null; ????????String?sLine?=?""; ????????String?sContent?=?""; ????????String?sLink?=?""; ????????URL?url?=?null; ????????String?outputFile?=?""; ????????ArrayList<string>?aLink?=?new?ArrayList<string>(); ????????String?Regex1?=?"CDATA[http:\/\/(sh)?mmsns([^]]*)/0]"; ???????? ????????reader?=?new?BufferedReader( ????????????????new?InputStreamReader(new?FileInputStream(new?File(jsonFile)),?"UTF-8")); ????????if?(reader?!=?null)?{ ????????????while?((sLine?=?reader.readLine())?!=?null)?{ ????????????????sContent?=?sContent?+?sLine; ????????????} ????????????reader.close(); ????????} ???????? ????????Pattern?pattern?=?Pattern.compile(Regex1); ????????Matcher?matcher?=?pattern.matcher(sContent); ????????int?count?=?0; ???????? ????????System.out.println("Start?processing..."); ????????while(matcher.find())?{ ????????????count++; ????????????sLink?=?sContent.substring(matcher.start()?+?6,?matcher.end()?-?1); ????????????sLink?=?sLink.replaceAll("\/",?"/"); ????????????aLink.add(sLink); ?????????} ???????? ????????System.out.println(count?+?"?pictures?were?found"); ???????? ????????for?(String?sLinkTemp?:?aLink)?{ ????????????url?=?new?URL(sLinkTemp); ????????????DataInputStream?dataInputStream?=?new?DataInputStream(url.openStream()); ???????????? ????????????outputFile?=?outputFolder?+?count?+?".jpg"; ????????????FileOutputStream?fileOutputStream?=?new?FileOutputStream(new?File(outputFile)); ????????????ByteArrayOutputStream?output?=?new?ByteArrayOutputStream(); ????????????System.out.println("Downloading?"?+?sLinkTemp?+?"?to?file?"?+?outputFile); ???????????? ????????????byte[]?buffer?=?new?byte[1024]; ????????????int?length; ? ????????????while?((length?=?dataInputStream.read(buffer))?>?0)?{ ????????????????output.write(buffer,?0,?length); ????????????} ????????????fileOutputStream.write(output.toByteArray()); ????????????dataInputStream.close(); ????????????fileOutputStream.close(); ???????? ????????????count--; ????????} ???????? ????????System.out.println("End?of?processing..."); ????} }</string></string>
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END