Przeszukiwanie pliku CSV

Przeszukiwanie pliku CSV
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Witajcie, mam problem ... Chciałbym żeby plik CSV wg wzoru:
1 ; jakiś_adresIP1
2 ; jakiś_adresIP1
3 ; jakiś_adresIP1
4 ; jakiś_adresIP1
5 ; jakiś_adresIP1

Został wczytany (to mi się udało) , ale do tego po wybraniu odpowiej wartości (podawanej z klawiatury) pingował odpowiadający mu w linii adres IP. Dałoby radę coś takiego wyskrobać ? :)

Jak na razie mam taki kod:

Kopiuj
import java.io.BufferedReader;
import java.io.FileReader;

import javax.swing.*;



public class Wczytaj_CSV {

public static void main(String[] args) throws Exception {
	
	String txt; //deklaracja zmiennej tekstowej
	txt = JOptionPane.showInputDialog("Podaj numer który ma zostać spingowany:");
	int n = Integer.parseInt(txt);
	  
      String splitBy = ";"; //rozpoznanie w pliku
      BufferedReader test = new BufferedReader(new FileReader("test.csv")); //otwarcie pliku i utworzenie bufora
      String line;
      System.out.println("WCZYTANIE PLIKU:");
	while((line = test.readLine()) != null){ //wczytuj dane aż do momentu gdzie linia będzie pusta
           String[] tab = line.split(splitBy); // tablica 
          // System.out.println(tab[0] +" * " + tab[1]); //dodawanie indeksów tablicy do pliku
           
         
           
      }
      test.close(); //koniec

  }
}

Pozdrawiam Was i liczę na jakąś odpowiedź :)

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Jeśli dobrze rozumiem pytanie:

  1. Wczytaj dane z pliku do Map<Integer, String>
  2. pinguj mapa.get(numerek_z_klawiatury)

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Mapa get mnie nie urządza, bo podanie numeru musi być z klawiatury , w sensie interaktywnie np przy wyrzuceniu okienka jak w kodzie powyżej.

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

A co ma piernik do wiatraka? o_O


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
niezdecydowany
niezdecydowany
czekaj czekaj.... piernik jest z mąki nie ? a mąka z młyna który napędza wiatrak, czyli ... coś ma :D
Shalom
Nie każdy wiatrak to młyn :P
Shakaz
Mają tyle samo liter :)
niezdecydowany
niezdecydowany
szach mat :D
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

A jak mogę wczytać plik CSV do mapy?

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Jak faktycznie masz tam takie śmieszne spacje w tym csv to elegancko tak:

Kopiuj
        Map<String, String> IPs = Files.readAllLines(Paths.get("input.csv")).stream()
                .map(line -> line.split(";"))
                .collect(Collectors.toMap(
                        array -> array[0].trim(),
                        array -> array[1].trim()
                ));

I teraz w tym swoim kodzie robisz sobie:

Kopiuj
String selected = JOptionPane.showInputDialog("Podaj numer który ma zostać spingowany:");
String IP = IPs.get(selected);

No i reszta tego tego kodu to pewnie:

Kopiuj
InetAddress inet = InetAddress.getByName(IP);
System.out.println(inet.isReachable(5000));

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 3x, ostatnio: Shalom
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Coś ta część z mapą mi nie paca ...

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Java 8.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

.map(line -> line.split(";"))
Syntax error ? Prawdopodbnie chodzi coś o "-" ...

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Ale java 8 ci wypluwa tu jakiś syntax error? Bo u mnie się kompiluje bez problemu... Bez javy 8 to się nie skompiluje...


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Tak, właśnie się dziwię, bo rano działałem jeszcze na Javie 7 i wgl pierwsza linia nawet się nie chciała skompilować. Po wgraniu Javy 8 przeszło normalnie ale zatrzymało się na wskazanym przeze mnie fragmencie... Jak możesz to daj mi linka do tej Javy, bo może coś źle pobrałem, ale nawet w pliku Javy "about Java " mam Version 8 update 20... Chyba że pokopałem coś przy kodzie, ale też raczej nie , bo po prostu kopiowałem kod źródłowy który mi podałeś powyżej ...

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
Kopiuj
import javax.swing.*;
import java.io.IOException;
import java.net.InetAddress;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) throws IOException {
        Map<String, String> IPs = Files.readAllLines(Paths.get("input.csv")).stream()
                .map(line -> line.split(";"))
                .collect(Collectors.toMap(
                        array -> array[0].trim(),
                        array -> array[1].trim()
                ));
        String selected = JOptionPane.showInputDialog("Podaj numer który ma zostać spingowany:");
        String IP = IPs.get(selected);
        InetAddress inet = InetAddress.getByName(IP);
        System.out.println(inet.isReachable(5000));
    }
}

To jest cały kod. Kompiluje sie i działa u mnie pod jdk1.8.0_05


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

A powiedz mi jakiego kompilatora używasz? Może w nim jest problem... Ja korzystam z Eclipsa.

No wiadomo o co chodzi ... Po prostu sądzę, że może konfiguracja Eclipsa zawodzi.

Shalom
Słabo mi. Eclipse to IDE a nie kompilator i kompiluje tym co masz w SDK które ściągnąłeś...
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

No to pokaż log z kompilacji.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Już się udało, zainstalowanie nowego Eclipsa pomogło, tylko niestety efekt nie jest taki jak oczekuje. Wartość zwracana to true lub false , a ja chce by po podaniu numeru pingował to co jest "obok" pierwszej kolumny CSV (z tej samej linii) .....

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

OMG chłopie. Matka wie że ćpiesz? Zamiast bezmyślnie kopiować kod (którego jeszcze nie umiesz skompilować) może spróbujesz ZROZUMIEĆ co on robi? Wyobraź sobie że ten kod pinguje podany adres i zwraca czy jest on osiągalny czy też nie... Wcale nie napisałeś po co chcesz pingować więc zalożyłem że chcesz sprawdzić czy serwer działa czy nie.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 2x, ostatnio: Shalom
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Nie powiedziałem , że nie wiem do czego służy program, tylko że cel nie jest taki jak zakładałem :
Chcę by program sprawdził czy podana wartość z klawiatury jest w pliku , i jeśli jest to pingowany jest adres z tej samej linii (druga kolumna).

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

No ale kod generalnie robi właśnie to. W czym rzecz?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
HE
  • Rejestracja:prawie 12 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Kraków
  • Postów:233
1

:D
To może coś takiego sobie dorzuć:

Kopiuj
Runtime rt = Runtime.getRuntime();
rt.exec("cmd.exe /c start cmd /k \""+ipDoPingu+"\"");
edytowany 1x, ostatnio: Hepek
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Z programem sobie poradziłem, a powiedzcie mi ... Przy wyeksportowaniu projektu do *.jar i odpaleniu go program po prostu się nie otwiera... Czy jest jakiś sposób by z całego projektu zrobić 1 plik ? Próbowałem eksportu do jar i executable jar i niestety nic... Po odpaleniu jara nic się nie dzieje.

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

java -jar twojjar.jar i przeczytaj komunikat błędu...


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
MI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

Naprowadziłeś mnie :) A powiedz mi jeszcze - czy istnieje możliwość odpalenia pliku nie mając JRE? W sensie że np przerobienia jar'a na exe by nie wymagał JRE? Polecasz jakieś narzędzie? Próbowałem Launch4J , ale chyba nici z tego. W tym wszystim chodzi o to, że w miejscu gdzie odpalam program nie mam Javy... I raczej mieć nie będę ...

GC
Napisz sobie to na przykład w C++. Jeśli program ma działać na Windows 7 lub nowszym to możesz napisać w C#, wymaga .NET Frameworka, ale od Windows 7 jak dobrze pamiętam jest domyślnie instalowany.
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

To napisz to w innym języku w takim razie? ;]


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.