Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Chipi333
    csendes tag

    Sziasztok!

    Most nekem is lenne egy kérdésem. Threadeket tárolok egy konténerben. Idővel, a threadek egy része még mindig fut, másik része már meghalt. Kérdésem az lenne, hogy hogyan lehetne legértelmesebb módon automatikusan (vagy periodikusan) ezeket a halott Threadeket eltávolítani a konténerből?

    Hát így hirtelen én azt tudom javasolni, hogy csinálj erre egy daemon thread-et, ami kis pioritással fut, és bizonyos időközönként végigmegy a konténeren és kidobja a halott threadeket. Az időközök nagyságára igazából nincs konkrét ötletem, attól függ meddig futnak a szálak, mennyire kritikus, hogy ne legyen sok szemét a konténerben.
    Aztán ezzel többet nem is kell foglalkozni, mert a daemon thread ugye meghal ha elfogynak a rendes szálak.

  • Chipi333
    csendes tag

    hát működni működik, csak az eredmény nem jó :D
    én is rájöttem egy másik megoldásra, bytebufferrel, ki is jött az eredmény ami a te kódoddal, de egyik sem jó :D

    pl 000000C0E0B22440 ez 10.3494 kellene hogy legyen, de sehogy sem tudom elérni hogy ez jöjjön ki, bár ebbe a hexába az a legfurább, hogy az elején és a végén is 0 van.

    //4024B2E0C0000000 ez lesz a végére
    String toConvert = "000000C0E0B22440";
    BigInteger temp = new BigInteger(toConvert, 16);

    long raw = temp.longValue();
    long result = 0x0L;

    result = (raw >> 32) | (raw << 32);
    result = ((result << 16) & 0xffff0000ffff0000L) | ((result >> 16) & 0x0000ffff0000ffffL);
    result = ((result << 8) & 0xff00ff00ff00ff00L) | ((result >> 8) & 0x00ff00ff00ff00ffL);

    double converted = Double.longBitsToDouble(result);

    System.out.println(converted);

    No akkor így műxik :)

  • Chipi333
    csendes tag

    Nem nyert
    Exception in thread "main" java.lang.NumberFormatException: For input string: "0xA2E16D3E949F633F"
    at sun.misc.FloatingDecimal.parseHexString(Unknown Source)
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)

    (minden hexára ezt írja)

    Nah, áthidaltam a problémát :)

    String toConvert = "A2E16D3E949F633F";
    BigInteger temp = new BigInteger(toConvert, 16);
    double converted = Double.longBitsToDouble(temp.longValue());

    Longot sem lehet vmiért közvetlenül csinálni belőle... Valami az előjelesség miatt lehet, de a BigInteger megeszi, és a longValue() a "A2E16D3E949F633F" bitmintát adja vissza long-ként, és abból már lehet double-t kalapálni :)

  • Chipi333
    csendes tag

    Sziasztok!

    Nekem kellene egy nagy segítség, Netbeans-ben hol a fenében van a source package? Mármint projekten belül létrehozásnál, nekem sehol sincs, csak egy kis semmi egyszerű package és folder...

    Hi!
    A projectben kell lennine egy olyan mapának, hogy Source Packages. Ebben vannak a packagek, illetve ha még nincs semmid akkor is egy default packagenek.

  • Chipi333
    csendes tag

    java-ban hex formában lévő big endian double, javas double-re való alakítására nem tud valaki valami forráskódot?

    Double
    A Java is big endiant használ. Szóval attól függően, hogy hogy is van tárolva az a hexa a Double osztály megfelelő függvényét érdemes használni. (stringről vagy longban tárolt bitmintáról lehet szó gondolom)

  • Chipi333
    csendes tag

    Mondjuk ilyen szempontból nem ismerem a JVM működését. Mi van ha sok az osztálybetöltés, és onnan elfogy a hely? Bár kérdés, hogy ez a terület mekkora...

    Hát, ha elfogy a hely és új osztályt akarsz betölteni akkor ugyanúgy game over mint ha a heap telne be. A JVM-ek viszont konfigolhatóak, szóval ennek is állítható a mérete, lehet a heap része és ott lehet dinamikus is a mérete, de GC-je nincs feltétlenül, meg hát nem is biztos, hogy szerencsés már betöltött classokat kidobni.

  • Chipi333
    csendes tag

    Ez akkor amikor a JVM-be a classloader betölti...
    Tehát elvileg 1-szer...az elején.

    Azt nem tudom, hogy ha közben van GC akkor ezeket is gyomlálja e...

    Azt nem tudom, hogy ha közben van GC akkor ezeket is gyomlálja e...
    A GC a classokat nem gyomlálja. Ezek az adatok nem a Heapen vannak hanem van erre egy külön memóriaterület. Bár úgy tudom, hogy van olyan megoldás is amikor ezt összevonják a heappel, mert pl sok a reflection használat, és nem lehet előre tudni mennyi class lesz betöltve, ellenben para lenne ha futás közben elfogyna itt a hely.

  • Chipi333
    csendes tag

    Működik, igaz hogy gány a kód, igaz, hogy lassú, de az enyém.
    Megoldás, annyi volt, hogy egyszerűen hatástalanítottam a gombot így lehetett látni, de nem lehet ugyanazt meghívni. Na majd elkezdhetem ezt tovább fejleszteni.

    Huhh, mitől lett az lassú? Még mindig 12 gombról beszélünk?

  • Chipi333
    csendes tag

    Sziasztok!

    Saját magamnak csináltam nemrég egy honlapot, nem vagyok egy nagyon tapasztalt programozó, de egy HTML weboldalt össze tudtam hozni. Viszont van vele annyi gondom, hogy kéne egy részéhez Javascript, amit nem tudok megcsinálni, mert lövésem sincs az egész témárol.

    Valamelyikőtök nem tudna segíteni. Egy egész egyszerű dologról lenne egyébként szó.

    Adott több lapon is ez a kódrészlet:

    <iframe src="https://viewer.zoho.com/embed.jsp?f=gIvdE" frameborder="0" width="680" height="600" style="margin-bottom:-70px; margin-top:-40px; "> </iframe>

    Ezekben a Framekben a Zoho viewer jelenik meg, az az online dokumentum nézegető, de a fejlécet mindig eltüntetem a vastagon kiemelt margóbeállítással, mert nem néz ki jól, hogy minddig megjelenik a dokumentum fölött a filenév.

    Tanakodtunk rajta a Google forumán, hogy emiatt adhat-e a Google rejtett tartalom miatti büntetést, azt monták nem valószínű, de biztosabb, ha írok egy szkriptet, ami utólag levágja a fejlécet. Bár nem tudom ez mért más, mintha beállítom a margó, hisz ugyan úgy akkor lesz egy rejtett tartalom, bár én nem vágom ezt a scriptezést...

    Valaki be tudna ide másolni egy ilyen scriptet, gondolom ez nem egy bonyolult dolog, vagy ha senkinek nincs ideje rá, erre a fajta műveletre hol találok leírást? Hol van leírás arról a parancsról, ami nekem kelle a script-be, hogy eltünjön a framekben a fejléc? Tudtok segíteni?

  • Chipi333
    csendes tag

    A lényeg, hogy van 12 button aminek a feliratát a random szavakra át kellene írni viszont az nem jó, hogy mondjuk az első gomb megkapja a az első magyar szót és a második gomb meg az angol megfelelőjét mert így minden egyes esetben akkor az első kettő gomb pár lesz így könnyedén fejthető.

    Arra gondoltam, hogy indítok egy ciklust amiben generálok egy random számot 1-től 12-ig, kiveszem a tömbből azt az elemet és azzal átállítom a jbutton textet majd azt a random számot kiveszem a a generálásból és így tovább. Ezzel kivédem azt, hogy a párok mindig ugyanazon a helyen legyenek.

    Jó a gondolatmenetem? A másik ezt, hogy írjam meg?

    Hát erre ötleteim vannak:
    - lemásolod a listát, és a másolatból feliratozol, úgy, hogy addig mindig kiszedsz egy random elemet amíg el nem fogy
    - csinálsz egy listát intekből(1-12), abbol szeded ki az indexeket random amíg el nem fogynak
    - ha nem fontos a szavak sorrendje az eredeti listádban, akkor azt megkeverheted úgy, hogy x-szer kiveszel egy random elemet és beszúrod a végére
    Meg valszeg vannak még opciók, de neem így hirtelen ezek jutottak eszembe.

  • Chipi333
    csendes tag

    Folytatódik.

    Olyat szeretnék, hogy egy tömbből kiszedett szavakra írjam át a Jbutton-ok feliratát.
    Ennek dinamikusan kéne működnie mivel minden induláskor mások ezek a szavak.
    Most ebben kérném a segítségetek.

    A másik nagy buta kérdésem, hogyha adatbázisban szeretnék adatokat tárolni javában, akkor mindig kell lennie egy külső szervernek amit a java elér vagy van csomagon belül adatbázis szerver? Úgy értve, hogyha a fájlfeldolgozásomat inkább adatbázisba raknám akkor kellene egy netes szerver amihez minden felhasználónak kéne elérése vagy ez már benne lenne a jar-ban?

    Hát nem teljesen értem a kérdést, de pl HSQLDB-hez nem feltétlenül kell külön adatbázis kezelő, hanem van app-ba integrálható változata.

  • Chipi333
    csendes tag

    Tehát arra, hogyan lenne célszerűbb tárolnom a session attribútumot vagy hogy tudom rendesen csökkenteni arraylistnél abban az esetben, ha nem csak a legutolsó elemet akarom kiszedni hanem amenyiket kiválasztottam.

    Hát, nem csináltam még ilyet, de szerintem egy iterátorral megoldható az ArrayListben is, bár nem optimális. Egy LinkedList jobban teljesít ha véletlenszerű helyekről akarsz törölni (itt is iterátorral lépkedsz és a kívánt pozícióban azt mondod neki hogy remove()).
    Indexelve is lehet wokraroundolni, ha számolod, hogy hányszor töröltél már és mindig annyival kisebb indexet törölsz(mert ugye annyival csúszott előrébb az elem), de ez azért elég undorító megoldás :)

  • Chipi333
    csendes tag

    Hali!

    Remélem jó topicot választottam. Egy webalkalmazás készítésében akadtam el.

    Egyszerű bevásárlókosár: készítsen egyszerű bevásárlókosarat. Egy felület, amelyen 4 darab termék van radio gombokkal felsorolva, mellettük az ára. A termékek alatt a bevásárló
    kosár tartalmát látjuk táblázatban. Minden sor egy termék. A táblázat utolsó sorában a termékek össz értéke szerepel. Három gombra van szükség: "Hozzáad" - termék hozzáadása
    a kosárhoz, "Kivesz" - kiveszi a legutolsó elemet, "Ürít" - kiüríti a kosarat. Bármely esemény kapcsán a kosár tartalma mindig az aktális termékeket mutatja és azok össz értékét.

    Most ott tartok, hogy megy a hozzáadás és persze a kiürítés, az index.jsp-ben ki is tudom iratni JSTL-el a kosárban levő adatokat és legalulra az összegüket, de mikor próbáltam kivenni belőlük a következő problémába ütköztem:
    pl. berakom termek1,2,3,4 és most mindet ki akarom venni tehát mind a 4 radio elemet kiválasztom. Mivel a termekek az egy ArrayList és a Kosar.java 108. soraban a for ciklust úgy van megadva ahogy; Kiveszi a termek1-et majd a termek2 a lista első helyére ugrik és i=2 miatt a termek3-at szedi ki.

    Hogy oldjam ezt meg? Vagy rosszul közelítettem meg az egészet? Gondolkoztam, hogy tömbbe tároljam a session attribútumot de nem tudom hogyan kellene.

    Kosar.java
    index.jsp
    Termékek.java

    Előre is köszönöm, ha segít valaki.

    ""Kivesz" - kiveszi a legutolsó elemet,"
    Nekem ebből az jön le, hogy csak a legutolső elemet kell kivenni a kosárból. Azzal meg nincs ilyen probláma.

  • Chipi333
    csendes tag

    Én csak azt vettem észre, hogy ami publikus vagy protected, vagy ami privát pont ezekhez kapcsolódik (mint egy privát mezőnek a lekérdezése publikus getterrel, de ez alap) Ezek használhatóak fel gond nélkül a gyermekben. (vagy publikus függvény ami felhasznál egy privát függvényt is)

    Mert végül is ha örököl, akkor a gyermek osztály mindent másol a szülőtől?
    Rövid, tömör leírást tudsz erről adni? ( mert úgy látszik ez tényleg nem tiszta, Java docsot kivéve)

    A gyermek megtudja hívni az elfedett statikus adatmezőket és metódusokat?

    Már tényleg belevagyok kavarodva egy kicsit :D kell a fejmosás.

    "Mert végül is ha örököl, akkor a gyermek osztály mindent másol a szülőtől?"
    Igen, alapvetően mindent másol, de a private dolgokhoz közvetlenül nem fér hozzá, csak az ősben definiált protected/public metódusokon keresztül.

    "A gyermek megtudja hívni az elfedett statikus adatmezőket és metódusokat?"
    A statikus adattagok és metódusok a statikus típushoz kötődnek. Ezért van az hogy nem szokás példányon keresztül elérni őket, mert megtévesztő lehet, ugyanis a referencia statikus típusa határozza meg, hogy melyik lesz meghívva.
    Pl.:
    Szülő.StaticMethod(); //értelemszerúen a Szülő metódusát hívja
    Gyerek.StaticMethod(); //értelemszerúen a Gyerek metódusát hívja
    Szülő sz = new Gyerek();
    sz.StaticMethod(); //a statikus típus(a referencia típusa), azaz a Szülő
    //StaticMethodját fogja hívni és kapsz mellé egy compiler warningot is
    //hogy statikus függvényt nem illik referencián keresztül hívni

    Szóval a gyerekből is eléred, de a szülő típuson keresztül kell rá hivatkozni.

    Tömören kb. ennyiben lehet összefoglalni. De szerintem keress a témáról valami egyetemi jegyzetet és olvasd át, aztán ha valahol nem világos akkor kérdezz.

  • Chipi333
    csendes tag

    Ja, hogy így értette a kollega! :) Köszi.

    Statikust is örökli? Azt gondolom nem, mert az csak az adott osztályra vonatkozik. (mint a statikus konstruktor, nem hozz létre példányt)

    "Statikust is örökli? Azt gondolom nem, mert az csak az adott osztályra vonatkozik. (mint a statikus konstruktor, nem hozz létre példányt)"

    Minden öröklődik. Itt kicsit összekavarodtál. A statikus valóban azt jelenti hogy az osztályhoz kötődik, és nem jön létre külön minden példányban, de ettől még a leszármazott osztálynak is meglesznek ugyanazok a statikus tagjai. A különbésg az, hogy máshogy működik a felüldefiniálás. Statikus dolgok esetén elfedésnek hívák, és teljesen máshogy viselkedik (angolul override helyett ezt hide-nak hívják).

  • Chipi333
    csendes tag

    Nem olyan egyszeru am a dolog mint amilyennek tunik, de ja, ezt legalabb megjegyzem, a privat az tiszta is volt, csak a statikus nem. :)
    Amugy ja, kicsit bonyolult lett, de egy nyamvadt statikus tag sincs meg benne, aminek ertelme is lenne. :(

    Chipi333: En nem ertek hozza, de nekem az lenne a logikus, hogy mivel gyerek osztalybol kozvetlenul nem erem el a privat tagokat, csak super-el, akkor nem oroklodott, csak inicializalodott a gyerek osztaly letrejottekor, ami meg nem ugyanaz.

    WonderCSabo: Tehat a metodusokat orokli, a privat tagokat nem, a metodusok is gondolom valami "rejtett" super hivassal erik el.

    Attól hogy a gyerek nem csinálhat vele azt amit akar még ott van, és öröklődik. Ha ez pl egy privát adattag aminek van gettere és settere akkor azokon keresztül olvashatod/írhatod, és a mező ugyanúgy része lesz az osztálynak.
    Ennek látszólag nincs értelme egy 2 osztályból álló progi esetén, de ha bonyolultabb a helyzet akkor lehetnek olyan dolgok amikbe nem szeretnél, ha egy örököltetés után a gyerek osztály belenyúlhat, mert problémákat okozhat. (Pl van egy meződ, aminek az értékétől függ több más mező is, akkor nem akarod, hogy megváltozhasson az értéke anélkül, hogy a többi követé a változást)

  • Chipi333
    csendes tag

    Amúgy nem sértésből, csak te írtad, hogy pont ettől félsz: túl bonyolítod! :D De legalább tanulsz belőle :)

    Ez egy aranyszabály: Privát és Statikus (függvény, adattag, osztály) nem örökölhető!

    "Ez egy aranyszabály: Privát és Statikus (függvény, adattag, osztály) nem örökölhető!"
    No hát azért ez így nem igaz. Öröklődik az csak a leszármazott közvetlenül nem fér hozzá :)

  • Chipi333
    csendes tag

    Hmm esetleg egy ilyen ArrayList-ceptionnek van ertelme?

    ArrayList<ArrayList<int[]>> var = new ArrayList<ArrayList<int[]>>() ;

    szoval ahogy en ertelmezem, a var egy ArrayList, ami ArrayList<int> -et fog tartalmazni..
    Viszont ami most nem vilagos, hogy hogy erem el az egyes elemeket :)
    var.get(0)-val pl elernem a tombot, ami az elso elem tartalmazott.. ezt most hozza kell rendelnem egy masik ArrayList<int[]>-hez, es ujra .get()-el kell elerni az egyes elemeket (1,2,3...), vagy van egyszerubb megoldas is?

    Tudsz olyat, hogy var.get(0).get(0) csak ebbe nem nehéz belezavarodni :)
    De ha jól értem mit szeretnél akkor azzal jársz a legjobban ha csinálsz magadnak egy Candidates classt ami pl egy ArrayListben tárolja a számokat, és abból csinász egy 2 dimenziós tömböt(generikusokból nem tudsz tömböt csinálni ugyanis, de ha becsomagolod a dolgot egy saját osztályba akkor már jó vagy). Aztán ha kiürült, akkor vagy az osztályt írod meg úgy, hogy ezt meg tudja mondani magáról, vagy egyszerűen null-ra állítod helyét a tömbben.

  • Chipi333
    csendes tag

    Végül megtaláltam, hogy hol volt a hiba. A beimportált projekt ún. Java Build Path nevű összetevője nem volt meg adva. Miután megadtam az a\src mappát minden működött. Bár kissé furcsa, hogyha lefuttatok egy java fájlt és benne van a main függvény, akkor miért kell még külön megadni neki.

    Ez azért fontos, mert egy java fájlban nem elérési utakat adsz meg az importált dolgokhoz, csak a package-ket. A Java pedig egy olyan könyvtárszerkezetet vár ami pont olyan mint a projecben a packageké. (Pl az allat.baromfi.Csirke osztályt az /allat/baromfi/ könyvtárban fogja keresni) Azt pedig tudnia kell, hogy ennek a könyvtárszerkezetnek hol a gyökere. (ergo nem elég ha csak úgy ráböksz egy fájlra, hogy fusson :) )
    Az meg egy jó kérdés, hogy az Eclipse ezt miért nem állította be az a/src-re importnál magától...

  • Chipi333
    csendes tag

    Hello!

    Lényegében adott egy 'a' nevű java project, melyen belül 2 mappa található: az egyik a java fájlokat tartalmazó 'src', a másik pedig a 'bin' a class fájlokkal és van egy '.settings' elnevezésű is. Amikor beimportálom a projektet a projekt explorerben megjelenik az 'a' projekt, ezen belül az 'src' és a 'JRE System Library'.Amikor azonban a java fájlokat szeretném futtatni akkor 'could not find main class' hibaüzenetet kapok, holott a 'run configurations'-ban jól van beállítva a main class.

    A console továbbá ezt írja ki:
    java.lang.NoClassDefFoundError: Elvis
    Caused by: java.lang.ClassNotFoundException: Elvis
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    Exception in thread "main"

    Hát egyéb fórumok alapján ez akkor tud történni, ha a classpath rosszul van beállítva és az eclipse nem a bin gyökérből próbál futtatni. (pl van egy test nevű package-d és nem bin/-ből hanem bin/test/-ből próbálod futtatni a test.Main nevű classt, mert akkor a java a bin/test/test/Main.class-t fogja keresni és az tényleg nincs)
    Na ez az amit nekem nem sikerült reprodukálni.
    Command linbebol rossz helyről indítva sikerült kicsikarni a ClassNotFoundot a javaból, de az eclipsemet sehogy nem tudtam rávenni, hogy rosszul csinálja :F
    Szóval fogalmam sincs hol lehet a hiba...

  • Chipi333
    csendes tag

    Aham, köszi.
    Bár furcsálom, ha új fájlt akarok létrehozni akkor a NetBeans felajánlja a JFrameWorkot. Nos az Eclipse nem sehol sem....
    Majd akkor megnézem ezeket a GUI szerkesztőket :)

    A NetBeans annyit csinal, hogy letrehoz neked egy osztalyt ami javax.swing.JFrame-bol szarmazik, es van benne alapbol egy GUI szerkeszto. Eclipseben ezt kezzel kell. De eselyes azert, hogy van ahhoz is vmi plugin ami megcsinalja helyetted. Mert hat kezzel guit irkalni a legundoritobb resze ennek a szakmanak :)

  • Chipi333
    csendes tag

    Sziasztok!

    Eclipse esetén mit kell még felraknom azért, hogy tudjam a Swing-et használni? JFramework stb létrehozása.

    Alapesetben semmit. Swinged az van mindenkepp. Ha vmi vizualis guiszerkesztot szeretnel, ahhoz nemtom milyen plugin van :F

  • Chipi333
    csendes tag

    Szia!

    Megnéztem a menüt, amit mondtál, de a main class elvileg helyesen szerepel a beimportált projekten belüli java fájlokban.

    Bővebbet tudsz irni arról, hogy mit/hogy importáltál és hogy akarsz futtatni?
    Mert manifest fájl az a JAR fájlokban van, és ha azt próbálsz futtatni, akkor tényleg jöhet ez a hibaüzenet, de nekem az Eclipsből konkrétan még nem sikerült ezt a reakciót kicsikarnom, pedig kellően szétvertem egy projectet :)

  • Chipi333
    csendes tag

    Sziasztok!

    Eclipse-ben szoktam dolgozni, de legutóbb elszállt a fejlesztőkörnyezet, így jobbnak láttam letörölni és újat letölteni. A problámám az, hogy amikor beimportálom a már meglévő projektemet, akkor a benne lévő java fájlok lefuttatásakor az Eclipse "could not find main class" hibát ír ki.

    Más fórumokon egy ún. manifest fájl hibájára hivatkoznak, de ez utóbbit nem igazán értettem.
    Mi lehetne orvosolni a fentebbi esetet? :F

    Hát Project -> Properties -> Run/Debug configuration és itt meg tudod mondani, h mi legyen a main class. Ez remélem megoldja.

  • Chipi333
    csendes tag

    Hello
    Meg tudná nekem mondani valaki hogy ez most milyen formátumú szám?

    000000400CAC2140
    és ez elvileg 8.83603 lenne, állítólag előjeles float32-ben big endianban, de annak valahogy túl hosszú. Sehogy sem sikerül úgy konvertálnom, hogy oda vissza jó jöjjön ki...

    Hát ez biza 64bites(azaz tuti nem float32).
    Ez a 8.83603 64bites IEEE 754 lebegőpontos számként (java double): 0x4021ac0c1fc8f323
    A 000000400CAC2140 kb ugyanez big endianban. Ami különbség van a kettő között az nem túl szignifikáns biteken van. Szóval valószinűszeg tényleg valami big endian lebegőpontos reprezentációja lehet a 8.83603nak (kb), csak nem 32 hanem 64 biten. De hogy pontosan mi, azt nem hiszem hogy meg lehet mondani.

  • Chipi333
    csendes tag

    Olyat lehet valahogy csinálni, hogy a jar futtatható program egy beállított heap méretet igényeljen magának? Tehát ne úgy hogy paraméterként megadja a felhasználó, hanem magától alapon kér magának nagyobb heapot.

    Sajnos ilyet nem lehet, csak workaroundok vannak rá. (becsomagolod másik appba, vagy egy scripttel inditod, és ezek a megfelelő command line paraméterekkel elinditják)

  • Chipi333
    csendes tag

    Mitől működik randomban a file renameTo metódusa? Van egy programom ami mentés előtt átnevezi az eredeti fájlt, biztonsági mentés céljából.
    Ez úgy működik, hogy konvertál egy fájl külső programmal, a konvertáltat megnyitja, majd a végén menti, visszakonvertálás előtt pedig még az eredeti fájlt átnevezi és bak kiterjesztést ad. Ez működik is, csak randomban. Semmi hiba, csak a renameTo sikertelen átnevezést ad vissza bizonyos fájloknál mindig, a többi fájlnál ugyanabban a mappában meg randomban. Vagy átnevezi, vagy sikertelen.

    Nem teljesen értem a folyamatot. Azt kicsit átláthatóbban leirhatnád, hogy mi történik.
    De ha nem tudod átnevezni a fájlt annak egy oka lehet: valamilyen processznél meg le van lockolva.
    Ez lehet a külső progi ami konvertált (lehet még nem engedte el a file-t), ill. lehet a windows is (nem feltétlenül engedi fel azonnal a lockot miután egy progi bezárta a fált).

    http://stackoverflow.com/questions/1325388/how-to-find-out-why-renameto-failed
    http://www.bigsoft.co.uk/blog/index.php/2010/02/02/file-renameto-always-fails-on-windows

    Google első két találat a problémára és szerintem leirják, hogy mik a lehetséges bajok.
    Ha csak annyi, hogy a windows még tartja rajta a lockot, akkor erre megoldás, hogy egy ciklusban addig próbálkozol az átnevezéssel amég nem sikerül(érdemes közben minden próbálkozás után pihentetni kicsit a szálat, hogy ezzel ne edd meg a procit). Ha valahol elfelejted bezárni a fájlt, akkor meg rá kell jönni, hogy ez hol van és javitani.

    Ui.: Ha nem windowson vagy akkor a lock felengedés késlekedése elvileg nem játszik, és tuti, hogy valahol nyitvahagyod a fájlokat.

Új hozzászólás Aktív témák

Hirdetés