Enregistrment des résultats obtenues dans un fichier csv en java
Résolu/Fermé
sirinebennaceur
Messages postés
10
Date d'inscription
jeudi 30 mars 2017
Statut
Membre
Dernière intervention
9 mai 2017
-
30 mars 2017 à 13:33
sirinebennaceur Messages postés 10 Date d'inscription jeudi 30 mars 2017 Statut Membre Dernière intervention 9 mai 2017 - 4 avril 2017 à 11:15
sirinebennaceur Messages postés 10 Date d'inscription jeudi 30 mars 2017 Statut Membre Dernière intervention 9 mai 2017 - 4 avril 2017 à 11:15
A voir également:
- Enregistrment des résultats obtenues dans un fichier csv en java
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Comment réduire la taille d'un fichier - Guide
- Jeux java itel football - Télécharger - Jeux vidéo
3 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
Modifié le 2 avril 2017 à 00:39
Modifié le 2 avril 2017 à 00:39
Bonjour,
Voici un exemple avec au passage une réorganisation complète du code avec des streams et du parallélisme pour gagner du temps lors du traitement, parce que si chacune de tes 166 adresses attends 5 secondes pour répondre ça prends 14 minutes avec ton code, alors qu'en faisant plusieurs adresses en même temps ça mets 1 minute avec mon code...
Voici un exemple avec au passage une réorganisation complète du code avec des streams et du parallélisme pour gagner du temps lors du traitement, parce que si chacune de tes 166 adresses attends 5 secondes pour répondre ça prends 14 minutes avec ton code, alors qu'en faisant plusieurs adresses en même temps ça mets 1 minute avec mon code...
package ping; import java.io.*; import java.net.*; import java.util.*; import java.util.stream.*; public class PingTest { public static InetAddress address170FromRange(int range) { try { return InetAddress.getByAddress(new byte[] { (byte) 170, 0, 0, (byte) range }); } catch (IOException e) { throw new UncheckedIOException(e); } } public static void main(String[] args) { List<InetAddress> addresses = IntStream.range(1, 166 + 1).mapToObj(PingTest::address170FromRange).collect(Collectors.toList()); new Timer().schedule(new PingTask("C:/ping.csv", addresses, 5_000), 0, 15 * 60_000); } }
package ping; import java.io.*; import java.net.*; import java.util.*; import java.util.concurrent.*; import java.util.stream.*; public class PingTask extends TimerTask { private final String fileName; private final Collection<InetAddress> addresses; private final int timeout; private final ForkJoinPool pool; public PingTask(String fileName, Collection<InetAddress> adresses, int timeout) { this.fileName = fileName; this.addresses = adresses; this.timeout = timeout; this.pool = new ForkJoinPool(addresses.size()); } @Override public void run() { System.out.println("Running pings."); pool.execute(this::pings); } private void pings() { try (FileWriter fw = new FileWriter(fileName, true)) { fw.write(addresses.parallelStream().map(this::ping).sorted().collect(Collectors.joining("\n", "", "\n"))); } catch (IOException e) { e.printStackTrace(); } } private String ping(InetAddress address) { String result = String.format("%1$tF %1$tT;%2$s;", new Date(), address.getHostAddress()); try { return result + address.isReachable(timeout); } catch (RuntimeException | IOException e) { return result + "error;" + e; } } }
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
30 mars 2017 à 19:09
30 mars 2017 à 19:09
Bonjour,
Quel serait le format du fichier CSV en sortie ?
Tu as un exemple de résultat attendu ?
Quel serait le format du fichier CSV en sortie ?
Tu as un exemple de résultat attendu ?
sirinebennaceur
Messages postés
10
Date d'inscription
jeudi 30 mars 2017
Statut
Membre
Dernière intervention
9 mai 2017
Modifié le 31 mars 2017 à 10:56
Modifié le 31 mars 2017 à 10:56
bonjour ,
j'ai pas compris ta question
j'ai pas compris ta question
sirinebennaceur
Messages postés
10
Date d'inscription
jeudi 30 mars 2017
Statut
Membre
Dernière intervention
9 mai 2017
>
sirinebennaceur
Messages postés
10
Date d'inscription
jeudi 30 mars 2017
Statut
Membre
Dernière intervention
9 mai 2017
31 mars 2017 à 13:01
31 mars 2017 à 13:01
voila un extrait d'affichage (c'est ne partie car l'affichage s'applique sur un pool d'adresse de 0.1 vers 0.166 :
vendredi 31 mars 2017 11:58:37
Sending Ping Request to /170.0.0.1
OK
Sending Ping Request to /170.0.0.2
ERR
Sending Ping Request to /170.0.0.3
ERR
vendredi 31 mars 2017 11:58:37
Sending Ping Request to /170.0.0.1
OK
Sending Ping Request to /170.0.0.2
ERR
Sending Ping Request to /170.0.0.3
ERR
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
31 mars 2017 à 18:46
31 mars 2017 à 18:46
Bonjour,
Ta question est :
"comment je peut enregistré ces données du ping dans un fichier csv"
Ma question est donc, à quoi doit ressembler le fichier obtenu ?
Un fichier CSV c'est un tableau avec des lignes et des colonnes, qu'est-que tu mettrais comme informations dans chaque case ?
Ta question est :
"comment je peut enregistré ces données du ping dans un fichier csv"
Ma question est donc, à quoi doit ressembler le fichier obtenu ?
Un fichier CSV c'est un tableau avec des lignes et des colonnes, qu'est-que tu mettrais comme informations dans chaque case ?
sirinebennaceur
Messages postés
10
Date d'inscription
jeudi 30 mars 2017
Statut
Membre
Dernière intervention
9 mai 2017
>
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
1 avril 2017 à 21:34
1 avril 2017 à 21:34
Bonjour ,
des information relatif a ça :
date, heure, ipv4, et état de ping
expl d'affichag obtenue
samedi 01 avr. 2017 20:31:00
Sending Ping Request to /170.0.0.1
OK
Sending Ping Request to /170.0.0.2
ERR
Sending Ping Request to /170
des information relatif a ça :
date, heure, ipv4, et état de ping
expl d'affichag obtenue
samedi 01 avr. 2017 20:31:00
Sending Ping Request to /170.0.0.1
OK
Sending Ping Request to /170.0.0.2
ERR
Sending Ping Request to /170
sirinebennaceur
Messages postés
10
Date d'inscription
jeudi 30 mars 2017
Statut
Membre
Dernière intervention
9 mai 2017
Modifié le 30 mars 2017 à 19:07
Modifié le 30 mars 2017 à 19:07
voici mon code de ping :
package ping; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.text.DateFormatSymbols; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class pingBiodec { public static void main(String[] args) throws UnknownHostException, IOException { int MINUTES = 15; // The delay in minutes Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // Function runs every MINUTES minutes. // Run the code you want here Date aujourdhui = new Date(); DateFormatSymbols monDFS = new DateFormatSymbols(); String[] joursCourts = new String[] { "", "lundi", "Mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche" }; monDFS.setShortWeekdays(joursCourts); SimpleDateFormat dateFormat = new SimpleDateFormat( "EEEEEEEE dd MMM yyyy HH:mm:ss", monDFS); System.out.println(dateFormat.format(aujourdhui)); InetAddress inet = null; for(int i=1;i<=166;i++){ try { inet = InetAddress.getByAddress(new byte[] { (byte) 170, (byte) 0, 0,(byte)i}); } catch (UnknownHostException e) {e.printStackTrace();} System.out.println("Sending Ping Request to " + inet); try { System.out.println(inet.isReachable(5000) ? "OK" : "ERR" ); } catch (IOException e) { e.printStackTrace(); } } } } , 0, 1000 * 60 * MINUTES); // 1000 milliseconds in a second * 60 per minute * the MINUTES variable. }}
3 avril 2017 à 12:30
merciiii infiniment mais comment je peux rendre les adresse ip dans l'ordre , est comment avoir un ping reguliére qui ce repéte tt les 15 minute
3 avril 2017 à 18:44
new Timer().schedule(..., 0, 15 * 60_000;
Quant au tri, actuellement il y en a déjà un, mais il se fait sur la ligne du fichier, donc sur les heures des ping qui sont dans la première colonne.
fw.write(addresses.parallelStream().map(this::ping).sorted()...
On peut faire le tri sur les adresses IP, mais du coup ce seront les heures des ping qui seront dans le désordre (à une minute près), parce que vu que les différentes adresses IP sont appelés en parallèles on ne peut pas savoir exactement dans quel ordre elles seront exécutées et encore moins quand elles répondront.
Le plus simple est donc d'intervertir les colonnes du CSV et de mettre en premier l'adresse IP puis l'heure et laisser le tri tel qu'il est (sur la ligne complète).
S'il y a besoin d'affiner le tri, on peut également passer un Comparator en paramètre de la méthode sorted()
4 avril 2017 à 11:15
ça marche merci bien :D