JavaRush /Blog Jawa /Random-JV /Kelas PrintStream kanggo apa?

Kelas PrintStream kanggo apa?

Diterbitake ing grup
Hello! Dina iki kita bakal ngomong babagan kelas PrintStreamlan kabeh sing bisa ditindakake. Apa kelas PrintStream - 1Bener, sampeyan wis kenal karo rong metode kelas PrintStream. print()Iki minangka lan cara println()sing mbokmenawa sampeyan gunakake saben dina :) Wiwit variabel System.outminangka obyek PrintStream, nalika sampeyan nelpon metode System.out.println(), sampeyan nelpon metode kelas tartamtu iki. Tujuan umum saka kelas PrintStreamkanggo informasi output kanggo sawetara stream. Kelas iki duwe sawetara konstruktor. Ing ngisor iki sawetara sing paling umum:
  • PrintStream(OutputStream outputStream)
  • PrintStream(File outputFile) throws FileNotFoundException
  • PrintStream(String outputFileName) throws FileNotFoundException
Nalika sampeyan bisa ndeleng, kita bisa pass menyang konstruktor saka obyek PrintStream, contone, jeneng file menyang kang kita arep kanggo output data. Utawa, minangka alternatif, obyek kasebut dhewe File. Ayo goleki cara kerjane nganggo conto:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class Main {

   public static void main(String arr[]) throws FileNotFoundException
   {
       PrintStream filePrintStream = new PrintStream(new File("C:\\Users\\Username\\Desktop\\test.txt"));

       filePrintStream.println(222);
       filePrintStream.println("Hello world");
       filePrintStream.println(false);
   }
}
Kode iki bakal nggawe file ing desktop test.txt(yen durung ana) lan nulis nomer kita, senar lan boolean-variabel ana sequentially. Mangkene isi file kita sawise program mbukak:

222
Hello world!
false
Kaya sing wis dakkandhakake ing ndhuwur, ora perlu ngliwati obyek file kasebut dhewe File. Sampeyan mung kudu nemtokake path menyang konstruktor:
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class Main {

   public static void main(String arr[]) throws FileNotFoundException
   {
       PrintStream filePrintStream = new PrintStream("C:\\Users\\Username\\Desktop\\test.txt");

       filePrintStream.println(222);
       filePrintStream.println("Hello world");
       filePrintStream.println(false);
   }
}
Kode iki bakal padha karo sing sadurunge. Cara liyane sing menarik kanggo dideleng yaiku , printf()utawa output string sing diformat. Apa tegese "string diformat"? Kanggo nerangake, aku bakal menehi conto:
import java.io.IOException;
import java.io.PrintStream;

public class Main {

   public static void main(String[] args) throws IOException {

       PrintStream printStream = new PrintStream("C:\\Users\\Евгений\\Desktop\\test.txt");

       printStream.println("Hello!");
       printStream.println("I'm robot!");

       printStream.printf("My name is %s, my age is %d!", "Amigo", 18);

       printStream.close();

   }
}
Ing kene, tinimbang nulis kanthi jelas jeneng lan umur robot kita ing baris, kita katon ninggalake "ruang kosong" kanggo informasi iki nggunakake penunjuk %slan %d. Lan kita ngliwati data sing kudu ana ing panggonan kasebut minangka paramèter. Ing kasus kita, iki string " Amigo "lan nomer 18. Kita bisa, contone, nggawe spasi liyane: ngomong, %b, lan pass parameter liyane. Kanggo apa? Kaping pisanan, kanggo nambah keluwesan. Yen program sampeyan kudu kerep nampilake pesen sambutan, sampeyan kudu ngetik kanthi manual teks sing dibutuhake kanggo saben robot anyar. Sampeyan ora bakal bisa nglebokake teks iki kanthi konstan: jeneng lan umur saben wong beda-beda! Nanging nggunakake cara anyar, sampeyan bisa output senar karo Salam kanggo pancet, lan yen perlu, mung ngganti paramèter ing cara printf().
import java.io.IOException;
import java.io.PrintStream;

public class Main {

   private static final String GREETINGS_MESSAGE = "My name is %s, my age is %d!";

   public static void main(String[] args) throws IOException {

       PrintStream printStream = new PrintStream("C:\\Users\\Евгений\\Desktop\\test.txt");

       printStream.println("Hello!");
       printStream.println("We are robots!");

       printStream.printf(GREETINGS_MESSAGE, "Amigo", 18);
       printStream.printf(GREETINGS_MESSAGE, "R2-D2", 35);
       printStream.printf(GREETINGS_MESSAGE, "C-3PO", 35);

       printStream.close();
   }
}

System.in spoofing

Ing kuliah iki kita bakal "nglawan sistem" lan sinau carane ngganti variabel System.inlan pangalihan output sistem menyang panggonan sing kita butuhake. Kelas PrintStream kanggo apa? - 2Sampeyan bisa uga wis lali apa iku System.in, nanging ora ana siswa JavaRush sing bakal lali konstruksi iki:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.in(kaya System.out) minangka variabel kelas statis System. Nanging, ora kaya System.out, kalebu kelas sing beda, yaiku, kanggo InputStream. Kanthi gawan System.in, iki minangka utas sing maca data saka piranti sistem-keyboard. Nanging, kaya ing kasus karo System.out, kita bisa ngganti sumber data, lan maca bakal kelakon ora saka keyboard, nanging saka panggonan kita kudu! Ayo katon ing conto:
import java.io.*;

public class Main {

   public static void main(String[] args) throws IOException {

       String greetings = "Hello! Меня зовут Амиго!\nЯ изучаю Java на сайте JavaRush.\nОднажды я стану крутым программистом!\n";
       byte[] bytes = greetings.getBytes();

       InputStream inputStream = new ByteArrayInputStream(bytes);

       System.setIn(inputStream);

       BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

       String str;

       while ((str = reader.readLine())!= null) {

           System.out.println(str);
       }

   }
}
Dadi apa sing kita lakoni? Biasane System.in"diikat" ing keyboard. Nanging kita ora pengin data diwaca saka keyboard: supaya diwaca saka baris teks biasa! Kita nggawe senar lan ditampa minangka array byte. Napa kita butuh bita? Kasunyatan iku InputStreamkelas abstrak, lan kita ora bisa nggawe conto. Sampeyan kudu milih sawetara kelas saka antarane ahli waris. Contone, kita bisa njupuk ByteArrayInputStream. Iku prasaja, lan mung kanthi jeneng sing jelas cara kerjane: sumber data yaiku array byte. Dadi, kita nggawe array byte sing padha lan ngirim menyang konstruktor stream, sing bakal maca data kasebut. Nyatane, kabeh wis siyap! Saiki kita mung kudu nggunakake metode System.setIn()kanggo nyetel nilai variabel kanthi jelas in. Ing kasus out, kaya sing sampeyan eling, jelas ora bisa nyetel nilai variabel kasebut: sampeyan kudu nggunakake metode khusus setOut(). Sawise kita nemtokake InputStreamvariabel sing digawe System.in, kita kudu mriksa apa ide kita bisa digunakake. Kanca lawas bakal nulungi kita babagan iki BufferedReader. Ing kahanan normal, kode iki bakal nyebabake console mbukak ing Intellij IDEa, lan data sing sampeyan lebokake saka keyboard bakal diwaca saka ing kono.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

       String str;

       while ((str = reader.readLine())!= null) {

           System.out.println(str);
       }
Nanging yen sampeyan mbukak saiki, sampeyan bakal weruh manawa teks saka program mung bakal dadi output menyang console, ora ana sing maca saka keyboard. Kita wis ngganti sumber data, saiki dudu keyboard, nanging senar! Gampang banget lan prasaja :) Ing kuliah dina iki, kita kenal karo kelas anyar lan ndeleng "hack" cilik anyar kanggo nggarap I / O. Wektu kanggo bali menyang kursus lan ngrampungake sawetara masalah :) Sampai ketemu ing kuliah sabanjure!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION