This repository has been archived on 2026-05-01. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
ProjetGenieLogicielLoto/src/main/java/fr/myny/data/DataCsv.java
2021-02-01 18:29:41 +01:00

93 lines
2.9 KiB
Java

package fr.myny.data;
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.ZipInputStream;
/**
* Classe d'extraction de fichier Zip
*/
public class DataCsv {
protected String destination;
/**
* Constructeur par defaut
* @throws IOException
*/
public DataCsv() throws IOException {
this.destination = "src/main/resources/Download";
ImportData imp = new ImportData("https://www.fdj.fr/jeux-de-tirage/loto/statistiques", this.destination);
}
/**
* Constructeur avec parametre
* @param s repertoire de destination
* @throws IOException
*/
public DataCsv(String s) throws IOException {
this.destination = s;
ImportData imp = new ImportData("https://www.fdj.fr/jeux-de-tirage/loto/statistiques", this.destination);
for (String name : imp.tabNameZip) {
name = this.destination.concat(name);
getCsv(name);
}
}
/**
* La methode de recuperation dun fichier csv
* @param fileZip : nom suivit du chemin du fichier zip
*/
private void getCsv(String fileZip) throws IOException{
File desDir = new File(destination);
byte[] buffer = new byte[1024];
ZipInputStream zis = new ZipInputStream(new FileInputStream(fileZip));
ZipEntry zipEntry = zis.getNextEntry();
while (zipEntry != null){
File newFile = newFile(desDir, zipEntry);
if (zipEntry.isDirectory()){
if (!newFile.isDirectory() && !newFile.mkdirs()){
throw new IOException("Failed to create directory " + newFile);
}
} else{
File parent = newFile.getParentFile();
if (!parent.isDirectory() && !parent.mkdirs()) {
throw new IOException("Failed to create directory " + parent);
}
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0){
fos.write(buffer, 0, len);
}
fos.close();
}
zipEntry = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
}
/**
* Methode verifiant si l extraction a bien ete faite
* @param destinationDir : chemin de destination
* @param zipEntry : zip cible
*/
public File newFile(File destinationDir, ZipEntry zipEntry) throws IOException{
File destFile = new File(destinationDir, zipEntry.getName());
String destDirPath = destinationDir.getCanonicalPath();
String destFilePath = destFile.getCanonicalPath();
if (!destFilePath.startsWith(destDirPath + File.separator)){
throw new IOException("Entry is outside of the target dir: " + zipEntry.getName());
}
return destFile;
}
}