JavaRush /Java Blog /Random-TK /“PrintStream” synpy näme?

“PrintStream” synpy näme?

Toparda çap edildi
Salam! PrintStreamBu gün synp we onuň edip biljek ähli zady hakda gürleşeris . “PrintStream” synpy näme? - 1Aslynda, synpyň iki usuly bilen eýýäm tanyş PrintStream. print()Bular , println()belki, her gün ulanýan usullaryňyzdyr :) Üýtgeýji System.outobýekt bolany üçin PrintStream, bir usul diýlende System.out.println(), bu aýratyn synpyň usuly diýilýär. Synpyň umumy maksady PrintStream, käbir akymlara maglumat çykarmak. Bu synpda birnäçe konstruktor bar. Iň ýaýranlaryň birnäçesi:
  • PrintStream(OutputStream outputStream)
  • PrintStream(File outputFile) throws FileNotFoundException
  • PrintStream(String outputFileName) throws FileNotFoundException
Görşüňiz ýaly, obýektiň konstruktoryna PrintStream, mysal üçin, maglumatlary çykarmak isleýän faýlyňyzyň adyna geçip bileris. Ora-da bolmasa, obýektiň özi File. Munuň mysallar bilen nähili işleýändigini göreliň:
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);
   }
}
Bu kod iş stolunda bir faýl döreder test.txt(öňem ýok bolsa) we booleanyzygiderli belgimizi, setirimizi we üýtgeýänimizi ýazar. Programma işledilenden soň faýlymyzyň mazmuny:

222
Hello world!
false
Aboveokarda aýdyşymyz ýaly, faýl obýektiniň özi geçmek hökman däl File. Diňe konstruktorda oňa barýan ýoly görkezmeli:
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);
   }
}
Bu kod öňküsi ýaly eder. Başga bir gyzykly usul, printf()ýa-da formatlanan setir çykyşy. "Formatlanan setir" nämäni aňladýar? Düşündirmek üçin bir mysal getirerin:
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();

   }
}
%sBu ýerde, robotymyzyň adyny we ýaşyny aç-açan ýazmagyň ýerine, görkezijiler ulanyp, bu maglumatlar üçin “boş ýer ” goýýarys %d. Bu ýerlerde bolmaly maglumatlary parametrler hökmünde geçirýäris. Biziň ýagdaýymyzda bu " Amigo " setiri we 18-nji belgidir. Mysal üçin, başga bir giňişlik döredip bileris: aýdyň %bwe başga bir parametrden geçip bileris. Bu näme üçin? Ilki bilen çeýeligi ýokarlandyrmak. Programmaňyzda hoş geldiňiz habaryny ýygy-ýygydan görkezmeli bolsa, her täze robot üçin zerur teksti el bilen girizmeli bolarsyňyz. Bu teksti hemişelik goýup bilmersiňiz: her kimiň ady we ýaşy başga! Newöne täze usuly ulanyp, hemişelik salam bilen setir çykaryp bilersiňiz, zerur bolsa usuldaky parametrleri üýtgedip bilersiňiz 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();
   }
}

Ulgam

Bu leksiýada “ulgam bilen göreşeris” we üýtgeýjini çalyşmagy System.inwe ulgam çykyşyny zerur ýere gönükdirmegi öwreneris. “PrintStream” synpy näme - 2Munuň nämedigini ýatdan çykaran bolmagyňyz mümkin System.in, ýöne hiç bir JavaRush okuwçysy bu gurluşygy ýatdan çykarmaz:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.in(ýaly System.out) statiki synp üýtgeýjisidir System. Emma, ​​tapawutlylykda System.out, başga bir klasa degişlidir InputStream. Düzgüne görä System.in, bu ulgam enjamyndan - klawiaturadan maglumatlary okaýan sapak. Şeýle-de bolsa, bolşy ýaly System.out, maglumat çeşmesini çalşyp bileris we okamak klawiaturadan däl-de, zerur ýerimizden bolar! Bir mysala seredeliň:
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);
       }

   }
}
Onda näme etdik? Adatça System.inklawiatura “daňylýar”. Emma maglumatlaryň klawiaturadan okalmagyny islemeýäris: adaty tekst setirinden okalyň! Bir setir ýasadyk we ony baýt massiwi hökmünde aldyk. Näme üçin baýt gerek? Hakykat, bu InputStreamabstrakt synp, biz munuň mysalyny döredip bilmeris. Mirasdarlarynyň arasynda haýsydyr bir synp saýlamaly bolarsyňyz. Mysal üçin, alyp bileris ByteArrayInputStream. Bu ýönekeý we diňe ady bilen nähili işleýändigi düşnüklidir: maglumat çeşmesi baýt massiwidir. streamŞeýlelik bilen, şol bir baýt massiwini döredýäris we maglumatlary okajak konstruktorymyza geçirýäris . Aslynda hemme zat eýýäm taýýar! System.setIn()Indi üýtgeýjiniň bahasyny aç-açan kesgitlemek üçin usuly ulanmalydyrys in. .Adyňyzda bolsa out, üýtgeýjiniň bahasyny kesgitlemek hem mümkin däldi: ýörite usul ulanmalydyňyz setOut(). InputStreamDöreden üýtgeýjimizi bellänimizden soň System.in, pikirimiziň işleýändigini ýa-da ýokdugyny barlamaly. Köne dost bu meselede bize kömek eder - BufferedReader. Adaty ýagdaýda bu kod Intellij IDEa-da konsolyň açylmagyna sebäp bolar we klawiaturadan girizen maglumatlaryňyz şol ýerden okalar.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

       String str;

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

           System.out.println(str);
       }
Nowöne indi işledeniňizde, programmadan gelen tekstimiziň diňe konsola çykjakdygyny, klawiaturadan okalmajakdygyny görersiňiz. Maglumat çeşmesini üýtgetdik, indi klawiatura däl, setirimiz! Örän aňsat we ýönekeý :) Şu günki leksiýamyzda täze synp bilen tanyşdyk we I / O bilen işlemek üçin täze kiçijik “hack” -a göz aýladyk. Kursa gaýdyp, käbir meseleleri çözmegiň wagty :) Indiki leksiýada görüşeris!
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION