abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:44 | Nová verze

    Bitwig Studio (Wikipedie) bylo vydáno ve verzi 6. Jedná se o proprietární multiplatformní (macOS, Windows, Linux) digitální pracovní stanici pro práci s audiem (DAW).

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Komunita

    Společnost Igalia představila novou linuxovou distribuci (framework) s názvem Moonforge. Jedná se o distribuci určenou pro vestavěné systémy. Vychází z projektů Yocto a OpenEmbedded.

    Ladislav Hagara | Komentářů: 0
    dnes 00:44 | Nová verze

    Google Chrome 146 byl prohlášen za stabilní. Nejnovější stabilní verze 146.0.7680.71 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 29 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Nová verze

    D7VK byl vydán ve verzi 1.5. Jedná se o fork DXVK implementující překlad volání Direct3D 3 (novinka), 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.

    Ladislav Hagara | Komentářů: 0
    včera 23:22 | Nová verze

    Bylo vydáno Eclipse IDE 2026-03 aneb Eclipse 4.39. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 10:22 | Upozornění

    Ze systému Slavia pojišťovny uniklo přibližně 150 gigabajtů citlivých dat. Jedná se například o pojistné dokumenty, lékařské záznamy nebo přímou komunikaci s klienty. Za únik může chyba dodavatelské společnosti.

    Ladislav Hagara | Komentářů: 8
    včera 10:11 | IT novinky

    Sněmovna propustila do dalšího kola projednávání vládní návrh zákona o digitální ekonomice, který má přinést bezpečnější on-line prostředí. Reaguje na evropské nařízení DSA o digitálních službách a upravuje třeba pravidla pro on-line tržiště nebo sociální sítě a má i víc chránit děti.

    Ladislav Hagara | Komentářů: 25
    včera 09:33 | IT novinky

    Meta převezme sociální síť pro umělou inteligenci (AI) Moltbook. Tvůrci Moltbooku – Matt Schlicht a Ben Parr – se díky dohodě stanou součástí Meta Superintelligence Labs (MSL). Meta MSL založila s cílem sjednotit své aktivity na poli AI a vyvinout takovou umělou inteligenci, která překoná lidské schopnosti v mnoha oblastech. Fungovat by měla ne jako centralizovaný nástroj, ale jako osobní asistent pro každého uživatele.

    Ladislav Hagara | Komentářů: 0
    včera 00:22 | Nová verze

    Byla vydána betaverze Fedora Linuxu 44 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 14. dubna.

    Ladislav Hagara | Komentářů: 1
    10.3. 12:11 | IT novinky

    Open source router Turris Omnia NG Wired je v prodeji. Jedná se o Turris Omnia NG bez Wi-Fi. Je připraven pro zamontování do racku.

    Ladislav Hagara | Komentářů: 6
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (6%)
     (0%)
     (11%)
     (29%)
     (2%)
     (5%)
     (2%)
     (13%)
     (25%)
    Celkem 1054 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Java: mezery v zapsaném souboru (začátečník)

    5.8.2009 14:43 Jan Grmela | skóre: 45 | blog: Kilo šťávy z lachtana | Brno
    Java: mezery v zapsaném souboru (začátečník)
    Přečteno: 782×

    Dobrý den,
    potřebuji na rychlo vyrobit program v Javě do jednoho projektu. Javě moc nerozumím, tak mě berte s rezervou. Cílem je aby třída (momentálně definováno jako proměnné) obsahovala kód shell skriptů, které budou vzdáleným voláním zapsány na disk a spuštěny. Pokud však takový skript zapíšu do cílového adresáře (Linux, 32-bit, x86), obsahuje jeho kód mezeru (resp. znak NULL dle hexa editoru) za každým znakem.
    Příklad:

    (originální kód v Java třídě)
    this.file = "#!/bin/sh\n" +
    :
    :
    "	lines=$(expr $(wc -l $TARGET|sed 's/^ *//'|cut -d \" \" -f 1) \"-\" 2)\n" +
    "	head -n $lines $TARGET > $TEMP\n" +
    "	cat $SOURCE >> $TEMP\n" +
    "	tail -n 2 $TARGET >> $TEMP\n" +
    :
    :
    
    (kód zapsaný do souboru)
    	 l i n e s = $ ( e x p r   $ ( w c   - l   $ T A R G E T | s e d   ' s / ^   * / / ' | c u t   - d   "   "   - f   1 )   " - "   2 ) 
     	 h e a d   - n   $ l i n e s   $ T A R G E T   >   $ T E M P 
     	 c a t   $ S O U R C E   > >   $ T E M P 
     	 t a i l   - n   2   $ T A R G E T   > >   $ T E M P 
    (kód zodpovědný za zápis stringu)
    File file = new File(this.script);
    DataOutputStream stream = new DataOutputStream(new FileOutputStream(file));
    stream.writeUTF(this.install); // zkoušel jsem i writeChars -- žádná změna
    return 0;

    Data shell skriptů nemohu umístnit mimo třídu. Ptám se tedy -- jak se zbavím mezer v souboru? A dále, existuje nějaká "lepší" možnost zápisu většího množství dat (podobně jako třeba v Perlu) do Stringu či jiné datové struktury (kterou pak vyplivnu do souboru), tak, abych nemusel každý řádek dávat do úvozovek a spojovat operátorem +...s tím, aby však zápis byl stejně přehledný.

    Odpovědi

    5.8.2009 15:20 Jan Trávníček | skóre: 10 | blog: ehonza | Existuje
    Rozbalit Rozbalit vše Re: Java: mezery v zapsaném souboru (začátečník)

    Zdravim. V javadocu (java.sun.com/j2se/1.4.2/docs/api/java/io/DataOutputStream.html) je popsáno jak se chovají jednotlivé metody. Ai by bylo výhodnější použít writeBytes(). Protože writeChars() a pravděpodobně i writeUTF() zapisuje znaky po 2 bytech.

    To mess up a Linux box, you need to work at it; to mess up your Windows box, you just have to work on it.
    5.8.2009 15:24 Jan Grmela | skóre: 45 | blog: Kilo šťávy z lachtana | Brno
    Rozbalit Rozbalit vše Re: Java: mezery v zapsaném souboru (začátečník)

    Díky. Myslel jsem si správně, že právě tam bude problém. Po přepnutí editoru do UTF-16 se text zobrazil správně. K vyřešení mi pomohla následující metoda z diskuse u FAQ na jGuru:

    /* convert from internal Java String Format -> UTF-8 encoded HTML/JSP-Pages  */
    public static String convertToUTF8(String s) {
      String out = null;
      try {
        out = new String(s.getBytes("UTF-8"));
      } catch (java.io.UnsupportedEncodingException e) {
        return null;
      }
      return out;
    }

    Nyní string před zápisem překóduji na UTF-8 a je po problému.

    5.8.2009 15:37 ZAH | skóre: 43 | blog: ZAH
    Rozbalit Rozbalit vše Re: Java: mezery v zapsaném souboru (začátečník)
    Dle mne je nejjednodušší použít třídu java.io.OutputStreamWriter a její podtřídy. Viz konstruktory
    OutputStreamWriter(OutputStream out)
              Creates an OutputStreamWriter that uses the default character encoding.
    OutputStreamWriter(OutputStream out, Charset cs)
              Creates an OutputStreamWriter that uses the given charset.
    OutputStreamWriter(OutputStream out, CharsetEncoder enc)
              Creates an OutputStreamWriter that uses the given charset encoder.
    OutputStreamWriter(OutputStream out, String charsetName)
              Creates an OutputStreamWriter that uses the named charset.
    
    5.8.2009 15:26 ZAH | skóre: 43 | blog: ZAH
    Rozbalit Rozbalit vše Re: Java: mezery v zapsaném souboru (začátečník)
    Problém bude při zápisu do souboru. Pošlete sem kód, kterým zapisujete. Jinak podobné texty je nejlépe normálně uložit jako textový soubor do balíku programu. Stream se zdrojem získáte ve třídě pomocí this.getClass.getResourceAsStream(fileName);
    5.8.2009 21:03 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Java: mezery v zapsaném souboru (začátečník)
    Nepoužívejte DataOutputStream, ale Writer, zde se konkrétně bude hodit PrintWriter. Při vytváření je vhodné nadefinovat kódování souboru, jinak se použije kódování platformy (což bude správně, pokud je počítač, kde spouštíte program, zároveň cílovým počítačem pro skripty a je tam správně nastavené locale; ale je to nevhodné,pokud chcete výstupní kódování nějak řídit). DataOutputStream slouží k serializaci Java objektů.
    6.8.2009 00:06 Jan Grmela | skóre: 45 | blog: Kilo šťávy z lachtana | Brno
    Rozbalit Rozbalit vše Re: Java: mezery v zapsaném souboru (začátečník)
    Díky za reakce, někdy se opravdu nevyplácí webové tutorialy typu "Writing files in Java" brát moc vážně :-)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.