public static void filetest() throws IOException {
String zipPath = "D:\\fileTest\\image\\3.zip"; //壓縮包路徑
String str1 = "測試test123abc"; //需要寫入的數據
String str2 = "測試2";
String Name1 = StringUtils.join("文件.json"); //壓縮包里的文件
String Name2 = StringUtils.join("file/文件1.json"); //在壓縮包里創(chuàng)建file目錄下的文件
//創(chuàng)建壓縮包
ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipPath));
//與方式二匹配使用(使用緩沖流)
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(zipOutputStream);
//創(chuàng)建壓縮包里的文件
zipOutputStream.putNextEntry(new ZipEntry(Name1));
byte[] bytes1 = str1.getBytes(StandardCharsets.UTF_8);
zipOutputStream.write(bytes1, 0, bytes1.length); //將數據寫入到壓縮包里的文件里面
zipOutputStream.closeEntry();
zipOutputStream.putNextEntry(new ZipEntry(Name2));
byte[] bytes2 = str2.getBytes(StandardCharsets.UTF_8);
//方式一將數據寫入文件(不適用緩沖流)
// zipOutputStream.write(bytes2, 0, bytes2.length);
//方式二將數據寫入文件(使用緩存流)
bufferedOutputStream.write(bytes, 0, bytes.length);
zipOutputStream.closeEntry();
zipOutputStream.flush();
zipOutputStream.close();
}
image.png
- f ile文件夾里面是文件1.json胃惜,里面的內容是“測試2”,文件.json的內容則是“測試test123abc”鼎姐。
使用緩沖流將文件寫入json文件
public static void writeString(File file, String content) {
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new FileWriter(file));
bufferedWriter.write(content);
bufferedWriter.flush();
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//關閉流釋放資源
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//測試
public static void main(String[] args) {
long stime1 = System.currentTimeMillis();
for (int j = 0; j <100 ; j++) {
File file = new File("G://wyh//out"+j+".json");
boolean b = file.exists();
if (!b) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
List<Map<String, Object>> list = new ArrayList<>();
int[] ints = new int[]{1,2,34,2,3,2};
Map<String, Object> map = new HashMap<>();
Map<String, Object> map1 = new HashMap<>();
list.add(map);
for (int i = 0; i < 100000; i++) {
map.put("Image"+i,"圖片");
map.put("Width"+i,"800");
map.put("Height"+i,"Height");
map.put("Title"+i,"View from 15th Floor");
map1.put("Image","圖片");
map1.put("Width","800");
map1.put("Height","Height");
map1.put("Title","View from 15th Floor");
map.put("IDsmap"+i,map1);
map.put("IDs"+i,ints);
}
String json = JSON.toJSONString(map);
writeString(file, json);
}
long etime1 = System.currentTimeMillis();
System.out.println("-----------end-----------"+(etime1 - stime1));
}
多文件壓縮
package com.edc.erp.task.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* 壓縮多個文件
*/
public class ZipMultiFile {
public static void main(String[] args) {
File[] srcFiles = {new File(""), new File("D:\\hhh\\Massage-app.zip")};
File zipFile = new File("D:\\hhh\\"+System.currentTimeMillis()+".zip");
// 調用壓縮方法
zipFiles(srcFiles, zipFile);
System.out.println("壓縮完成钾麸!");
}
public static void zipFiles(File[] srcFiles, File zipFile) {
// 判斷壓縮后的文件存在不,不存在則創(chuàng)建
if (!zipFile.exists()) {
try {
zipFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
// 創(chuàng)建 FileOutputStream 對象
FileOutputStream fileOutputStream = null;
// 創(chuàng)建 ZipOutputStream
ZipOutputStream zipOutputStream = null;
// 創(chuàng)建 FileInputStream 對象
FileInputStream fileInputStream = null;
try {
// 實例化 FileOutputStream 對象
fileOutputStream = new FileOutputStream(zipFile);
// 實例化 ZipOutputStream 對象
zipOutputStream = new ZipOutputStream(fileOutputStream);
// 創(chuàng)建 ZipEntry 對象
ZipEntry zipEntry = null;
// 遍歷源文件數組
for (int i = 0; i < srcFiles.length; i++) {
// 將源文件數組中的當前文件讀入 FileInputStream 流中
fileInputStream = new FileInputStream(srcFiles[i]);
// 實例化 ZipEntry 對象炕桨,源文件數組中的當前文件
zipEntry = new ZipEntry(srcFiles[i].getName());
zipOutputStream.putNextEntry(zipEntry);
// 該變量記錄每次真正讀的字節(jié)個數
int len;
// 定義每次讀取的字節(jié)數組
byte[] buffer = new byte[1024];
while ((len = fileInputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, len);
}
}
zipOutputStream.closeEntry();
zipOutputStream.close();
fileInputStream.close();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}