93 lines
2.9 KiB
Java
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;
|
|
}
|
|
}
|