java, System.in i System.out, problem z wczytaniem i wypisaniem danych

0

Witam!
Napisalem aplikacje rachunkowa na jeden z przedmiotow z programowania. Jest juz w calosci skonczona oprocz pewnego szczegolu z ktorym nie moge sie uporac. Otoz z gory zostal narzucony sposob otwierania aplikacji, tzn. komenda:

java pakietDoKtoregoNalezyKlasa .KlasaMain < wczytaj.txt > zapisz.txt

gdzie plik wczytaj.txt to plik z ktorego program ma pobrac dane a plik zapisz.txt to plik gdzie ma zapisac program to co wygeneruje na podstawie pierwszego pliku.
Pomozecie? Tylko z tym mam problem.

0

Aby to działało musisz zwyczajnie wczytywać tekst ze standardowego wyjścia i wypisywać tekst na standardowe wyjście (czyli normalnym System.out.println). Przekierowaniem rzeczy z pliku i do pliku zajmie się system operacyjny.

0

Moglbys mi pokazac na przykladzie?

0

Tutaj tutorial pokazuje jak wczytywać ze standardowego wyjścia dodatkowe parametry przy uruchamianiu aplikacji: http://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html

0

No dobra, zrobilem tak tylko ze jedyne co sie dzieje to tworzy mi sam ten plik zapisz.txt, ale nie wyswietla mi zawartosci pliku wczytaj.txt i nie wiem jak mam przechwycic nazwe tego pliku z tej komendy bo jak robie jak w przykladzie z podanego tutoriala to nic sie nie dzieje tylko tworzy jeden plik.

0

Przykład uruchomienia

java-jar test.jar plik1.txt plik2.txt

kod:

if(args.length == 2)
{
   System.out.println(args[0]);
   System.out.println(args[1]);
}
1

@Madaoo, nie przeczytałeś treści zadania. Jedno rozwiązanie (z przekierowaniem) podał @Ktos. Jeśli chcesz korzystać z argumentów linii poleceń, to raczej tak:

if(args.length>=4 && args[0].equals("<") && args[2].equals(">"))
{
    String input = args[1];
    String output = args[3];
    //obróbka
}
0

Dzieki bardzo bogdans.niezalogowan!! wreszcie dziala : ) a jeszcze pytanie mam odnosnie tego pakietu przy otwieraniu, to chodzi o to zeby program byl w folderze o nazwie tego pakietu? i jeszcze jest kropka przed nazwa klasy. moglby ktos mi to troche wytlumaczyc? bo chcialbym to zrozumiec

0

Nie chwal mnie za bardzo. moim zdaniem autorowi zadania chodzi o takie rozwiązanie jak podał @Ktos. Jeśli Twoja klasa (powiedzmy Glowna) z metodą main jest w pakiecie aaa.bbb, to powinieneś mieć gdzieś na dysku folder aaa, w nim podfolder bbb, a w nim plik Glowna.class. Uruchamiasz program poleceniem java aaa.bbb.Glowna, folderem bieżącym powinien być nadfolder folderu aaa.

0

tylko miedzy pakiet .klasaMain jest spacja. To nie robi roznicy? Co do rozwiazania od @Ktos , nie wiem dokladnie o co w tym chodzi, wiem ze musze zrobic tak zeby moj program otwieralo sie jak we wzorze ktory podalem, przy czym moj program odczytuje plik wczytaj.txt, wykonuje na nim pewne obliczenia i instrukcje ktore mam napisane w zadaniu i ma zapisac do pliku zapisz.txt

0

nadal nie dziala tak jak powinno... @Ktos potrzebuje pomocy, czy moglbys mi wyjasnic Twoj sposob?

0

W programie nie musisz wiele zmieniać (może nawet nic). Po takim wywołaniu java ... < wczytaj.txt > zapisz.txt instrukcje System.out.println() nie piszą na ekran, piszą do pliku zapisz.txt. Czytanie z domyślnego strumienia wejściowego System.in zostaje zastąpione czytaniem z pliku wczytaj.txt.

0

faktycznie dziala : ) dzieki bardzo, na zapis sam juz wpadlem wczoraj ale tego wczytywania nie moglem rozgryzc : D

1 użytkowników online, w tym zalogowanych: 0, gości: 1