Comment compresser un fichier JAVA CSV et le gérer dans un tableau d'octets

◆ Classe principale

	public static void main(String[] args) {

		List<File> csvFileList = new ArrayList<File>();
		CsvCreater csvCreater = new CsvCreater();

		for (int i = 0; i < 5; i++) {
			csvFileList.add(csvCreater.createCsv());
		}

		//Convertir CSV en tableau d'octets
		ZipFileUtil zipFileUtil = new ZipFileUtil();
		String zipFileName = zipFileUtil.createZip(csvFileList);
		byte[] zipByteArray = zipFileUtil.zipToByteArray(zipFileName);

		//Restaurer le tableau d'octets en ZIP
		EncodeZip encodeZip = new EncodeZip();
		encodeZip.write(zipByteArray);
	}

◆CSVCreater.java

public class CsvCreater {
	private Integer num = 0;

	public CsvCreater() {
		//Stub de constructeur généré automatiquement TODO
	}

	public File createCsv() {
		File csvFile = null;
		CSVWriter csvw = null;
		num += 1;
		try {
			csvFile = createFile(num);
			csvw = new CSVWriter(new FileWriter(csvFile), ",".charAt(0),
					"\"".charAt(0), "\"".charAt(0), "\r\n");

			List<String[]> outStrList = createDate();
			csvw.writeAll(outStrList);

			if (csvw != null) {
				csvw.close();
			}
			System.out.println("Traitement réussi");

		} catch (IOException e) {
			System.out.println("Échec du traitement");
			e.printStackTrace();
		} finally {
		}
		return csvFile;

	}

	public File createFile(Integer num) {
		Calendar cTime2 = Calendar.getInstance();
		String csvFileName = "tmp/csvFile" + cTime2.get(Calendar.SECOND) + "_" + num + ".csv";
		num = num + 1;
		return new File(csvFileName);
	}

	public List<String[]> createDate() {
		List<String[]> outDateList = new ArrayList<String[]>();
		String[] outStr = new String[100];
		Integer numnum;
		for (int k = 0; k < 5; k++) {
			for (int j = 0; j < 100; j++) {
				numnum = j * k;
				outStr[j] = numnum.toString();
			}
			outDateList.add(outStr);
		}
		return outDateList;
	}

}

◆ Classe Utill du fichier Zip

package csv;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Calendar;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipFileUtil {

	public String createZip(List<File> fileList) {
		ZipOutputStream zos = null;
		Calendar cTime = Calendar.getInstance(); //[1]
		String zipFileName = "tmp/zipfile" + cTime.get(Calendar.SECOND) + ".zip";
		File file = new File(zipFileName);

		try {
			zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
			createZip2(zos, fileList);

			fileSizeCheck(file);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return zipFileName;
	}

	public void createZip2(ZipOutputStream zos, List<File> fileList) throws IOException {
		byte[] buf = new byte[1024];
		InputStream is = null;
		try {
			for (File file : fileList) {
				ZipEntry entry = new ZipEntry(file.getName());
				zos.putNextEntry(entry);
				is = new BufferedInputStream(new FileInputStream(file));
				int len = 0;
				while ((len = is.read(buf)) != -1) {
					zos.write(buf, 0, len);
				}
			}

			is.close();
			zos.closeEntry();
		} catch (IOException e) {
			e.printStackTrace();
		}
		zos.close();

	}

	public void fileSizeCheck(File file) {
		long fileSize = file.length() / 1024;
		if (fileSize > 0) {
			System.out.println("Fichier:" + file.getName());
			System.out.println("taille du fichier:" + fileSize + "KB");

		} else {
			System.out.println("Fichier illégal: 1 Ko");

		}

	}

	public byte[] zipToByteArray(String zipFileName) {
		File file = new File(zipFileName);
		try {
			InputStream inputStream = new FileInputStream(file);

			return getBytes(inputStream);

		} catch (FileNotFoundException e) {
			//Bloc de capture généré automatiquement TODO
			e.printStackTrace();
		}
		return null;

	}

	/**
	*Convertir InputStream en tableau d'octets
	*
	* @param is
	* @retour d'un tableau d'octets
	*/
	public byte[] getBytes(InputStream is) {
		//Une classe dont la destination de sortie est un tableau de type octet.
		//Normalement, le flux de sortie d'octets est émis vers un fichier ou une socket,
		//La classe ByteArrayOutputStream est un octet[]La destination de sortie est une variable, c'est-à-dire la mémoire.
		ByteArrayOutputStream b = new ByteArrayOutputStream();
		OutputStream os = new BufferedOutputStream(b);
		int c;
		try {
			while ((c = is.read()) != -1) {
				os.write(c);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (os != null) {
				try {
					os.flush();
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

		//La destination d'écriture se trouve dans la classe ByteArrayOutputStream.
		//Lors de l'extraction de ces données d'octets écrites sous forme de tableau de type d'octets,
		// toByteArray()Appelez la méthode.
		return b.toByteArray();
	}
}
```

◆EncodeZip

```java
package csv.day0114;

import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class EncodeZip {

	public EncodeZip() {
		//Stub de constructeur généré automatiquement TODO
	}

	public void write(byte[] byteData) {

		File outputImageFile = new File("tmp/outfile2.zip");
		InputStream inputStream = new ByteArrayInputStream(byteData);

		OutputStream os = null;
		try {
			os = new BufferedOutputStream(new FileOutputStream(outputImageFile));
			int c;
			while ((c = inputStream.read()) != -1)
				os.write(c);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (os != null) {
				try {
					os.flush();
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

			if (inputStream != null) {
				try {
					inputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
```

 ◆ Suppression de répertoire (récursive)

```java
	public void dirDelete(File TestFile) {
		if (TestFile.exists()) {

			//Vérification de l'existence du fichier
			if (TestFile.isFile()) {
				//Supprimer s'il existe
				if (TestFile.delete()) {
					System.out.println("Supprimer le fichier:" + TestFile.getName());
					this.j++;
				} else {
					System.out.println("Fichier ne existe pas:" + TestFile.getName());
				}
				//Lorsque la cible est un répertoire
			} else if (TestFile.isDirectory()) {

				//Récupérez la liste dans l'annuaire
				File[] files = TestFile.listFiles();

				//Boucle pour le nombre de fichiers existants et suppression récursive
				for (int i = 0; i < files.length; i++) {
					dirDelete(files[i]);
				}
				System.out.println("Cible à supprimer:" + files.length + "Nombre de suppressions:" + this.j);

			}
		} else {
			System.out.println("Le répertoire n’existe pas");
		}
	}
```


Recommended Posts

Comment compresser un fichier JAVA CSV et le gérer dans un tableau d'octets
Comment convertir un fichier en tableau d'octets en Java
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment créer un tableau Java
Convertir un tableau d'octets Java en une chaîne hexadécimale
Comment développer et enregistrer une application Sota en Java
Comment lire un fichier et le traiter comme une entrée standard
Comment tester une méthode privée et la simuler partiellement en Java
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
Pour créer un fichier Zip lors du regroupement des résultats de recherche de base de données en Java
Comment enregistrer JFR (Java Flight Recorder) et générer un fichier de vidage
[Java] [Pour les débutants] Comment insérer des éléments directement dans un tableau à deux dimensions
Comment afficher une page Web en Java
<java> Lire le fichier Zip et le convertir directement en chaîne
Comment créer un environnement Java en seulement 3 secondes
Comment passer d'Eclipse Java à un fichier SQL
Ecrire une classe en Kotlin et l'appeler en Java
Comment gérer les fichiers TSV et les fichiers CSV dans Ruby
Comment Git gérer les projets Java EE dans Eclipse
Comment enregistrer des fichiers avec l'extension spécifiée sous le répertoire spécifié en Java dans la liste
Comment initialiser un tableau Java
Créer un servlet Java et un fichier WAR JSP à déployer sur Apache Tomcat 9 avec Gradle
Comment demander un fichier CSV au format JSON avec jMeter
Comment lire votre propre fichier YAML (*****. Yml) en Java
Attribuer des expressions lambda Java8 aux variables et les réutiliser
[Java] Je souhaite convertir un tableau d'octets en un nombre hexadécimal
Comment changer une chaîne dans un tableau en un nombre dans Ruby
Lire les données WAV sous forme de tableau d'octets sur Android Java
Comment stocker des chaînes de ArrayList à String en Java (personnel)
Que s'est-il passé dans «Java 8 to Java 11» et comment créer un environnement
Comment appeler et utiliser l'API en Java (Spring Boot)
Fonctionnalité du langage Java et comment elle a produit un bogue subtil
Comment ajouter les mêmes index dans un tableau imbriqué
Comment simuler le téléchargement de formulaires post-objet vers OSS en Java
Différences dans la gestion des chaînes entre Java et Perl
Comment écrire des commentaires dans le fichier de définition de schéma dans GraphQL Java et les refléter dans GraphiQL et GraphQL Playground
Comment créer un conteneur Java
Comment apprendre JAVA en 7 jours
Décompressez le fichier zip en Java
Enregistrer la sortie dans un fichier en Java
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Comment concaténer des chaînes avec Java
Comment créer un fichier jar sans dépendances dans Maven
Comment implémenter un travail qui utilise l'API Java dans JobScheduler
Comment créer un nouveau projet Gradle + Java + Jar dans Intellij 2016.03
Comment faire fonctionner automatiquement un écran créé en Java sous Windows
Comment charger un fichier de téléchargement Spring et afficher son contenu
Convertir un tableau de chaînes en une liste d'entiers en Java
Lire les éléments contenant des virgules dans les fichiers CSV sans fractionnement (Java)
Comment obtenir la longueur d'un fichier audio avec Java
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
Convertissez Excel en Blob avec java, enregistrez-le, lisez-le à partir de DB et exportez-le sous forme de fichier!
Comment créer un résumé de calendrier Java
Lors de la recherche de plusieurs dans un tableau Java