栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java批量写入文件和下载图片的示例代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java批量写入文件和下载图片的示例代码

很久没有在WhitMe上写日记了,因为觉着在App上写私密日记的话肯定是不安全的,但是想把日记存下来。,然后看到有导出日记的功能,就把日记导出了(还好可以直接导出,不然就麻烦点)。导出的是一个html文件。可以直接打开,排版都还在。

看了下源码,是把日记存在一个json数组里了,图片还是在服务器,利用url访问,文字是在本地了。 但是想把图片下载到本地,然后和文字对应,哪篇日记下的哪些图片。

大概是如下的json数组。 大概有几百条,分别是头像、内容:文字||内容:图片、时间。 简单明了的json结构,就想着用java遍历保存到本地。

[{
  "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数组遍历。获取到的图片下载,文字写入文档。

 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();
 }
      }
    }
  }
 
  
  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包:

 
    
      commons-io
      commons-io
      2.4
    
    
   
  
    org.apache.httpcomponents
      httpclient
     4.3.5
   
   
     org.apache.httpcomponents
     httpmime
     4.3.5
   

运行结果:

保存到本地:

以上就是Java批量写入文件和下载图片的示例代码的详细内容,更多关于Java批量写入和下载的资料请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/131697.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号