Java Zipファイルの処理
ナビゲーションに移動
検索に移動
Java Zipファイルの処理
例
参照
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipInputStream;
- public abstract class LogAnalyzer{
- // ファイルの配列を処理する
- public void analyze(File[] logs) {
- try {
- for (File log : logs) {
- if (log.getName().endsWith("zip")) {
- analyzeZipFile(log);
- } else {
- analyzeTextFile(log);
- }
- }
- } catch (Exception e) {
- //TODO
- e.printStackTrace();
- }
- }
- // Zipファイルの場合
- private void analyzeZipFile(File zippedLog) throws IOException {
- ZipInputStream zin = new ZipInputStream(new FileInputStream(zippedLog));
- ZipEntry entry = null;
- while ((entry = zin.getNextEntry()) != null) {
- System.out.println("**********" + entry.getName());
- analyze(zin);
- zin.closeEntry();
- }
- zin.close();
- }
- // テキストファイルの場合
- private void analyzeTextFile(File textFile) throws IOException {
- FileInputStream fis = new FileInputStream(textFile);
- analyze(fis);
- fis.close();
- }
- // ログの処理
- public void analyze(InputStream in) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
- String line = null;
- while ((line = br.readLine()) != null) {
- System.out.println(line);
- // ログの処理
- }
- }
- }
圧縮
- // アーカイブ対象ファイル格納 Key:ファイル名、Value:対象ファイル
- Map<String, List<File>> zipFileMap = new HashMap<>();
- :
- for(Map.Entry<String, List<File>> zipFileEntity : zipFileMap.entrySet()) {
- File zipFile = new File(zipFileEntity.getKey());
- List<File> zipContais = zipFileEntity.getValue();
- try(ZipOutputStream
- zout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)))) {
- byte[] buf = new byte[1024];
- for (File zipContain : zipContais) {
- ZipEntry zipEntry = new ZipEntry(zipContain.getName());
- zout.putNextEntry(zipEntry);
- try(InputStream is = new BufferedInputStream(new FileInputStream(zipContain))) {
- @SuppressWarnings("unused")
- int size = 0;
- while ((size = is.read(buf)) != -1) {
- zout.write(buf);
- }
- }
- }
- for (File zipContain : zipContais) {
- if (zipContain.delete()) {
- delFileCnt++;
- }
- }
- } catch (FileNotFoundException e) {
- new BatchException(e.getMessage(), e);
- } catch (IOException e) {
- new BatchException(e.getMessage(), e);
- }
- }
© 2006 矢木浩人