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

网友投稿 293 2022-11-21


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:5EruvEXG9: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****",

"http://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包:

commons-io

commons-io

2.4

org.apache.httpcomponents

httpclient

4.3.5

org.apache.httpcomponents

httpmime

4.3.5

运行结果:

保存到本地:

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:解决java web应用线上系统偶发宕机的情况
下一篇:记一次springboot服务凌晨无故宕机问题的解决
相关文章

 发表评论

暂时没有评论,来抢沙发吧~