生活不易、且行且珍惜。网站首页 程序人生
Java批量写入文件和下载图片
发布时间:2019-07-08 11:42编辑:zj 阅读:1884文章分类: Java互动QQ群:170915747
很久没有在WhitMe上写日记了,因为觉着在App上写私密日记的话肯定是不安全的,但是想把日记存下来。,然后看到有导出日记的功能,就把日记导出了(还好可以直接导出,不然就麻烦点)。导出的是一个html文件。可以直接打开,排版都还在。
看了下源码,是把日记存在一个json数组里了,图片还是在服务器,利用url访问,文字是在本地了。 但是想把图片下载到本地,然后和文字对应,哪篇日记下的哪些图片。
大概是如下的json数组。 大概有几百条,分别是头像、内容:文字||内容:图片、时间。 简单明了的json结构,就想着用java遍历保存到本地。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | [{ "avatar" : "http://static.withme.cn/585****" , "blocks" : [{ "content" : "今天天气不错******" , "type" : "text" }, { "content" : "http://static.withme.cn/84ac***" , "type" : "pic" }, { "content" : "http://static.withme.cn/5af2c***" , "type" : "pic" }, { "content" : "http://static.withme.cn/9a4e****" , "type" : "pic" }, { "content" : "http://static.withme.cn/9ffdb***" , "type" : "pic" }, { "content" : "http://static.withme.cn/da5e7db***" , "type" : "pic" }, { "content" : "http://static.withme.cn/e6ccf3764***" , "type" : "pic" }, { "content" : "http://static.withme.cn/73ca***" , "type" : "pic" }, { "content" : "http://static.wi***" , "type" : "pic" }, { "content" : "http://static.withme.cn/4cf7dde****" , "type" : "pic" }], "dateStr" : "2018-09-03" , "timeStr" : "18:59:41" },{...},...] |
将json数组格式化确保正确然后转成json数组遍历。获取到的图片下载,文字写入文档。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | public static void main(String[] args) { CloseableHttpClient client = null ; JSONArray jsonArray = JSONArray.parseArray( "[{ "avatar" : "http://static.withme.cn/585****" , "blocks" : [{ "content" : "今天天气不错******" , "type" : "text" }, { "content" : "http://static.withme.cn/84ac***" , "type" : "pic" }, { "content" : "http://static.withme.cn/5af2c***" , "type" : "pic" }, { "content" : "http://static.withme.cn/9a4e****" , "type" : "pic" }, { "content" : "http://static.withme.cn/9ffdb***" , "type" : "pic" }, { "content" : "http://static.withme.cn/da5e7db***" , "type" : "pic" }, { "content" : "http://static.withme.cn/e6ccf3764***" , "type" : "pic" }, { "content" : "http://static.withme.cn/73ca***" , "type" : "pic" }, { "content" : "http://static.wi***" , "type" : "pic" }, { "content" : "http://static.withme.cn/4cf7dde****" , "type" : "pic" }], "dateStr" : "2018-09-03" , "timeStr" : "18:59:41" },{...},{...},...]"); try { for ( int m = 0 ; m < jsonArray.size(); m++) { JSONObject jsonPas = jsonArray.getJSONObject(m); JSONArray array = JSONArray.parseArray(jsonPas.get( "blocks" ).toString()); String time = jsonPas.get( "dateStr" ).toString(); for ( int j = 0 ; j < array.size(); j++) { JSONObject jsPas = array.getJSONObject(j); // 遍历 jsonarray 数组,把每一个对象转成 json 对象 if (jsPas.get( "type" ).equals( "text" )) { FileWriter fileWriter = null ; try { String filePath = "f:/13/" + time; File dir = new File(filePath); // 检查放置文件的文件夹路径是否存在,不存在则创建 if (!dir.exists()) { dir.mkdirs(); // mkdirs创建多级目录 } File checkFile = new File(filePath + "/text" + time + "-" + j + ".txt" ); // 检查目标文件是否存在,不存在则创建 if (!checkFile.exists()) { checkFile.createNewFile(); // 创建目标文件 } // FileWriter(File file, boolean append),append为true时为追加模式,false或缺省则为覆盖模式 fileWriter = new FileWriter(checkFile, true ); String url = jsPas.get( "content" ).toString(); // 向目标文件中写入内容 fileWriter.append(url); fileWriter.flush(); System.out.println( "写入成功!!" ); } catch (IOException e) { e.printStackTrace(); } finally { try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } if (jsPas.get( "type" ).equals( "pic" )) { client = HttpClients.createDefault(); String url = jsPas.get( "content" ).toString(); String path = "f:/13/" + time; // System.out.println(jsPas.get("content")); httpGetImg(client, url, path + "/pic" + time + "-" + j + ".jpg" ); System.out.println( "ok" ); } } } } catch (Exception e) { e.printStackTrace(); } finally { if (client != null ) { try { client.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 发送get请求, 下载图片 * * @param url 路径 * @return */ public static void httpGetImg(CloseableHttpClient client, String imgUrl, String savePath) { // 发送get请求 HttpGet request = new HttpGet(imgUrl); // 设置请求和传输超时时间 RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout( 50000 ).setConnectTimeout( 50000 ).build(); // 设置请求头 request.setHeader( "User-Agent" , "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1" ); request.setConfig(requestConfig); try { CloseableHttpResponse response = client.execute(request); if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) { HttpEntity entity = response.getEntity(); InputStream in = entity.getContent(); FileUtils.copyInputStreamToFile(in, new File(savePath)); System.out.println( "下载图片成功:" + imgUrl); } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } finally { request.releaseConnection(); } } |
JAr包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!-- apache io操作通用jar包 --> < dependency > < groupId >commons-io</ groupId > < artifactId >commons-io</ artifactId > < version >2.4</ version > </ dependency > <!-- httpclient 支持jar --> < dependency > < groupId >org.apache.httpcomponents</ groupId > < artifactId >httpclient</ artifactId > < version >4.3.5</ version > </ dependency > < dependency > < groupId >org.apache.httpcomponents</ groupId > < artifactId >httpmime</ artifactId > < version >4.3.5</ version > </ dependency > |
运行结果:
保存到本地:
#去评论一下
标签:#Java
版权声明:本博客的所有原创内容皆为作品作者所有
转载请注明:来自ZJBLOG 链接:www.zjhuiwan.cn

「万物皆有时,比如你我相遇」
感谢大佬打赏【请选择支付宝或微信,再选择金额】
使用微信扫描二维码完成支付
