recuperation des traces dans un serveur FTP et enregistrer leur contenu dans une base de donnée Mysql
bonjour,
je suis nouveau ici mais j'ai très besoin d'aide,
voici ce que je dois faire:
1- télécharger dossier sur un serveur FTP et placer dans un dir local(code java)
2-de-zipper les éléments dans le dossier un par un et placer le nom des éléments dans un fichier.text successivement séparer par un espace (code java)
3-exécuter le fichier dans cygwin automatiquement et envoyer dans un fichier1.txt (code java)
4-lire le fichier1.txt et ajouter dans une base de donnée MySQL (code java)
merci à vous
le 1- j'ai déjà un code mais ça ne marche pas il a retourné les fichiers vide
voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;
import static javaapplication5.MonFTP.receptionner;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class MonFTP {
public static FTPClient ftp;
private static BufferedOutputStream out;
public static void main(String[] args) {
String result;
result = receptionner("C:\\cygwin\\home\\colombna\\decoder\\traces","");
System.out.println("Result: " + result);
}
public static String receptionner(String chemin, String nomFichier) {
try {
String server = "xxx";
String username = "xxx";
String password = "xxx";
// Connect and logon to FTP Server
FTPClient ftp = new FTPClient();
ftp.connect(server);
ftp.login(username, password);
System.out.println("Connected to " + server + ".");
System.out.print(ftp.getReplyString());
// List the files in the directory
ftp.changeWorkingDirectory("/dir");
FTPFile[] files = ftp.listFiles();
System.out.println("Number of files in dir: " + files.length);
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
for (int i = 0; i < files.length; i++) {
System.out.print(df.format(files[i].getTimestamp().getTime()));
System.out.println("\t" + files[i].getName());
String filename = files[i].getName();
File f1 = new File(chemin+"/"+filename+"");
out = new BufferedOutputStream(new FileOutputStream(f1),8);
nomFichier = files[i].getName();
}
ftp.retrieveFile(nomFichier+"", out);
ftp.logout();
ftp.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return "reussi";
}
} |
le 2- ce code marche bien
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| import java.io.BufferedReader;
import static java.io.FileDescriptor.in;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class GZIPExample {
public static void main(String[] args) throws IOException {
// String file = "C:\\cygwin\\home\\colombna\\decoder\\tesbuffer.log";
String gzipFile = "D:\\Asa_zo\\macrogpeh\\GPEH_CALL_FAIL\\A20150715.1115+0300-1130+0300_SubNetwork=ANRNC02,MeContext=ANRNC02_rnc_gpehfile_Mp0.bin.gz";
String newFile = "C:\\cygwin\\home\\colombna\\decoder\\C.bin";
// compressGzipFile(file, gzipFile);
InputStream in;
decompressGzipFile(gzipFile, newFile);
}
private static void decompressGzipFile(String gzipFile, String newFile) {
try {
FileInputStream fis = new FileInputStream(gzipFile);
try (GZIPInputStream gis = new GZIPInputStream(fis); FileOutputStream fos = new FileOutputStream(newFile)) {
byte[] buffer = new byte[1024];
int len;
while((len = gis.read(buffer)) != -1){
fos.write(buffer, 0, len);
}
}
} catch (IOException e) {
}
}
private static void compressGzipFile(String file, String gzipFile) {
try {
try (FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(gzipFile); GZIPOutputStream gzipOS = new GZIPOutputStream(fos)) {
byte[] buffer = new byte[1024];
int len;
while((len=fis.read(buffer)) != -1){
gzipOS.write(buffer, 0, len);
}
}
} catch (IOException e) {
}
}
} |
le 3- j'ai encore un code mais ça donne des erreurs et le cygwin,il ne trouve pas
voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
try
{
Process p = Runtime.getRuntime().exec("C:/cygwin/bin/bash -c C:\\cygwin\\home\\colombna\\decoder\\TEST.sh");
InputStream outStream = p.getInputStream(); // normal output of the shell
InputStream errStream = p.getInputStream(); // error output of the shell
// TODO: start separate threads to read these streams
PrintStream ps = new PrintStream(p.getOutputStream());
ps.println("cd decoder");
ps.println("bash TEST.sh");
ps.println("exit");
ps.close();
p.waitFor();
if(p.exitValue() == 0)
{
JOptionPane.showMessageDialog(this,"execution reussi!");
}
else
{
JOptionPane.showMessageDialog(this,"execution non reussi!");
}
}
catch(Exception e)
{
System.out.println("Exception: "+ e.toString());
} |
on peut faire dans un tableau mais ça ne marche pas encore,il ne trouve pas cygwin
pour le 4 j'ai deja un code mais juste lire le fichier mais je ne sais pas l'enregistrer dans une base
voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| JFileChooser dialogue = new JFileChooser();
// affichage
dialogue.showOpenDialog(null);
String filePath = ""+ dialogue.getSelectedFile() ;
try{
BufferedReader buff = new BufferedReader(new FileReader(filePath));
try {
String line;
// Lire le fichier ligne par ligne
// La boucle se termine quand la méthode affiche "null"
Pattern pattern = Pattern.compile("\\[(.*)\\]\\s+\\/(\\d+)\\s+\\((.*)\\)\\s+([^\\s]+)\\s+\\((.*)\\)\\s+\\((.*)\\)\\s+\\((.*)\\)\\s+\\((.*)\\)\\s+\\((.*)\\)\\s+\\((.*)\\)\\s+\\((.*)\\)\\s+\\((.*)\\)\\s+\\((.*)\\)");
while ((line = buff.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
for (int i = 1; i <= matcher.groupCount(); i++) {
this.textArea1.setText(matcher.group(i));
System.out.println(matcher.group(i) );
}
}
}
buff.close(); //Lecture fini donc on ferme le flux
}
catch (IOException e){
System.out.println(e.getMessage());
System.exit(1);
}
}
catch (IOException e) {
System.out.println(e.getMessage());
System.exit(1);
} |
le fichier il y a des exceptions c'est pourquoi j'ai utilisé le regex ,
P.S: si possible,je veut que tout ça se lie et marche automatique!
merci a vous,
jayzman