Távfelkészítő bemenet és kimenet java-n
Az információ bevitele és kimenete a programozó minden lépésben szembenéz. Ez mind a kereskedelmi termékek írására, mind az olimpiai problémák megoldására vonatkozik. Így történt, hogy az újonc számára nehéz megérteni, hogy ezeket a műveleteket a Java nyelv segítségével végzik. Ebben a szövegben megpróbálom enyhíteni ezt a problémát, ha röviden megfontolom a csomag java.io tulajdonságait.
Minden, ami az információ bevitelével / kimenetével kapcsolódik, a stream fogalma. A stream egyszerűen információforrás vagy olyan hely, ahol az információ irányítható. Érdekli a fájlok feldolgozásának esetét.
A legegyszerűbb áramlás az, amely az információ bináris ábrázolásával működik, különben bájtokkal. Minden bináris stream örökölhető két absztrakt osztályból - InputStream és OutputStream. Két leszármazott - FileInputStream és FileOutputStream érdekel. Itt van egy programszöveg, amely az a.txt fájl tartalmát átmásolja a b.txt fájlba:
Ne felejtse el bezárni a szálakat a close () metódussal. Adatait elveszítheti. Mindkét osztálynak kényelmes konstruktora van a fájl elérési útjától. Ha a b.txt nem létezik, akkor létrejön. Ellenkező esetben újraírják. Ne felejtse el elkapni a kivételeket (vagy mutatni a módszer fejlécében).
A gyakorlatban az Olympiad problémáinak írásakor nem szükséges az adatok bináris megjelenítésével dolgozni. Egy kis előrelépés a FileReader és a FileWriter. amelyek nagyon hasonlóak a bináris testvérekhez. Számunkra az egyetlen különbség az, hogy szimbólumokkal dolgoznak. Az új funkciót a BufferedReader és a PrintWriter biztosítja. amely az előző pár osztályú csomagolóanyagnak tekinthető. Ez a funkció line-by-line fájlok olvasása és írása. Ugyanaz a példa a fájl másolására:
PrintWriter osztály nagyon közel van a szabványos funkciók C. print () módszer, és a println () meghatározása minden szabványos típusok (ez utóbbi ad egy új sor végén a kimenet) és a printf () módszer nagyon hasonlít a megfelelő eljárást a C. További részletek a témában format string szintaxis, lásd a megfelelő segítséget oldalt. BufferedReader tetszik pusztán az a jelenléte egy módszer readline ().
Kezdve az 1.5 verzióval. a nyelv végül bizonyította az OOP előnyeit az információ bevitel szempontjából. Ez kapcsolódott a Scanner osztály megjelenéséhez a java.util csomagban. Az egyes alaptípusok (valamint az osztályok a hosszú számtani), van egy pár módszerek: hasNextT () azt mondja, hogy lehet-e továbbra is olvasni az elem típusa T. mivel nextT () megpróbálja olvasni a tételt. A következő () és a következő () függvények külön szavakban dolgoznak (részletekért lásd az osztályleírást). A következő példában az a.txt fájl elején található 32 bites számok egy példányát másolja a b.txt fájlba. sorokat sorba írva:
Bár a szkenner nem szál, a close () metódust is fel kell hívnia. amely lezárja a fő forráshoz használt áramot. A szakértők azt mondják, hogy hasonló funkciókat biztosítanak, kezdve az első verziótól, a DataInputStream-től és a DataOutputStream-ból. képességeik azonban gyengébbek, és nem mindig működnek megfelelően (ezért nem ajánlott szigorúan használni őket).
Csak a sikert kívánja, és néha tanácsot ad a kedvenc nyelvének dokumentációjában - hirtelen tanuljon valami hasznosat! Végül adok egy táblázatot a dupla számok olvasási idejéről (másodpercek alatt) a két módszer figyelembe vételével, számától függően: