NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Program v javě nestardartní chování

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Vítězslav Škrabal:29.7.2017 16:58
package Net;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class NetR {


        static InputStream inputStream;
    static FileOutputStream fileOutputStream;
    static String ouputSource;
    public static void main(String[] args) throws IOException,InterruptedException {
        String url = args[0];
        Date date = new Date();
     @SuppressWarnings("deprecation")
     int actHodiny = date.getHours();
     int actMinuty = date.getMinutes();
     int actSekundy = date.getSeconds();
     int datum = date.getDate();
  // zacatek 23:00
                int startHodiny = Integer.parseInt(args[1]);
                int startMinuty = Integer.parseInt(args[2]);

                // koniec 01:00
                int stopHodiny = Integer.parseInt(args[3]);
                int stopMinuty = Integer.parseInt(args[4]);
     // uklada do suboru v tvare HHmmss.mp3 (napr. 230000.mp3 pre 23:00 00s)
     ouputSource = startHodiny +""+startMinuty+""+actSekundy+".mp3";
    System.out.println(actHodiny + ":" + actMinuty + "\n");



                while (true) {
                        // v ciklu overuje cas, jestli uz moze spustit nahravani
                        date = new Date();
                        actHodiny = date.getHours();
                        actMinuty = date.getMinutes();

                        if (startHodiny == actHodiny && startMinuty == actMinuty) {
                                // spustam iba v pripade ak je spravny cas, inak cakam
                                System.out.println("spoustim= v "+startHodiny+":"+startMinuty+"ukoncuji v "+stopHodiny+":"+stopMinuty+"\n");
                                start(url,stopHodiny, stopMinuty);
                        } else {
                                System.out.println("cekam\n");
                                System.out.println(datum);
                                TimeUnit.SECONDS.sleep(1);
                                continue;
                        }
                }
    }
                public static void start(String adresa ,int h, int m) throws IOException {
           // String adresa="http://icecast2.play.cz/croregion128.mp3";
                        URL url = new URL(adresa);
                        inputStream = url.openStream();
                        System.out.println("url.openStream("+adresa+")\n");

                        fileOutputStream = new FileOutputStream(ouputSource);
                        System.out.println("FileOutputStream: " + ouputSource + "\n");
                        Date date = new Date();
                        @SuppressWarnings("deprecation")

                        int c;
                        int actH = date.getHours();
                        int actM = date.getMinutes();

                        System.out.println("Start\n");
                        while (((c = inputStream.read()) != -1) && (actH != h || actM != m)) {
                                date = new Date();
                                actH = date.getHours();
                                actM = date.getMinutes();

                                fileOutputStream.write(c);
                        }

                        System.out.println("End of stream\n");
                }

        }

Když ho spustím s příkazového řádku na Notebooku který má systém W7 aby uložil stream http://icecast2.play.cz/…egion128.mp3 ze začátkem nahrávaní 23 hodin a konec 1hodina po půl noci ¨tak mi to nenahraje celé 2 hodiny ale někdy 13 min někdy 1 hodinu a 30 minut. Z počátku mi to nahrávalo celé dvě hodiny ale v poslední době mi to nějak hapruje.Nedalo by se to upravit aby se zapsalo do logu na čem to vázne?.Upozorňuji že jsem ten program nepsal já ale jeden típek byl té dobroty a napsal mi ho,já jsem ho pouze zkompiloval v eclipse díky

 
Odpovědět
29.7.2017 16:58
Avatar
jan valenta
Člen
Avatar
jan valenta:1.8.2017 10:54

kód jsem 100% nepochopil, ale tahle část
while (((c = inputStream.read()) != -1) && (actH != h || actM != m))
asi říká, že to má běžet dokud soubor neskončí, nebo dokud není přesný čas hodin A minut, jenomže ty tam máš přesný čas hodin NEBO minut
*edit, úplná blbost, sorry

Editováno 1.8.2017 10:57
 
Nahoru Odpovědět
1.8.2017 10:54
Avatar
Vítězslav Škrabal:1.8.2017 12:33

Díky za postřeh na tom asi něco bude

while (((c = inputStream.read()) != -1) && (actH != h  || actM != m))

já jsem to trochu upravil místo || tak &&

while (((c = inputStream.read()) != -1) && (actH != h && actM != m))

Tak po testovaní dám vědět

 
Nahoru Odpovědět
1.8.2017 12:33
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.