Java: Textový vstup a výstup

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Scanner: Poznámka o možné nefunkčnosti síťových disků.)
(Přidána samostatná kapitolka pro Standardní vstup a výstup.)
Řádka 1: Řádka 1:
== BufferedWriter ==
+
== Zápis do souboru (<tt>BufferedWriter</tt>) ==
  
 
Třída <code>BufferedWriter</code> slouží pro zápis dat do textového výstupu.
 
Třída <code>BufferedWriter</code> slouží pro zápis dat do textového výstupu.
Řádka 42: Řádka 42:
 
  out.close();
 
  out.close();
  
== Scanner ==
+
 
 +
== Vstup (<tt>Scanner</tt>) ==
 
* Třída <code>Scanner</code> slouží ke čtení z textového vstupu &mdash; z klávesnice nebo z textového souboru.
 
* Třída <code>Scanner</code> slouží ke čtení z textového vstupu &mdash; z klávesnice nebo z textového souboru.
 
* Zaveden od Javy 5 &mdash; nahrazuje <tt>BufferedReader</tt>.
 
* Zaveden od Javy 5 &mdash; nahrazuje <tt>BufferedReader</tt>.
Řádka 79: Řádka 80:
 
     ...
 
     ...
 
  }
 
  }
 +
 +
 +
== Standardní vstup a výstup ==
 +
* Unixové programy a programy pro textový řádek často potřebují číst data ze [[Vstup a výstup procesů, přesměrování|standardního vstupu]] (běžně klávesnice) a zapisovat data na [[Vstup a výstup procesů, přesměrování|standardní výstup]] (běžně monitor).
 +
* Pro základní práci mnohdy stačí přímo pracovat se standardním vstupem a výstupem přímo:
 +
 +
; System.out
 +
* Běžně používáme pro výstup do konzole:
 +
System.out.print("Ahoj!");
 +
System.out.println("Vypíše řádek na obrazovku!");
 +
 +
; System.in
 +
* Lze použít například pokud potřebujeme pouze počkat na stisk Enteru:
 +
System.in.read();
 +
* Vyžaduje ale práci s vyjímkami (může vyhodit <tt>IOException</tt>), je tedy lepší použít třídu [[#Vstup (<tt>Scanner</tt>)|Scanner]].
 +
  
 
== Viz také ==
 
== Viz také ==

Verze z 16. 1. 2015, 11:57

Obsah

Zápis do souboru (BufferedWriter)

Třída BufferedWriter slouží pro zápis dat do textového výstupu.

Princip
Otevření standardního výstupu
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

Tuto variantu používáme tehdy, kdy chceme společnou metodu pro psaní do souboru i na standardní výstup. Pro standardní výstup jinak samozřejmě stačí:

System.out.println(...);
Otevření souboru
Charset kodovani = Charset.charsetForName("utf-8");
Path cesta = Paths.get("vystup.txt");
BufferedWriter out = Files.newBufferedWriter(cesta, kodovani);

Související třídy:

Metody
Charset kodovani = Charset.charsetForName("utf-8");
Path cesta = Paths.get("vystup.txt");
BufferedWriter out = Files.newBufferedWriter(cesta, kodovani);
out.write("blabla");
out.newLine();
out.close();


Vstup (Scanner)

Narazili jsme na problém, že třída Scanner nepracovala správně se soubory na síťovém disku při ladění v prostředí NetBeans 8.0.2 (JDK 7u71). Chovala se k souboru, jako by byl prázdný. Výsledná aplikace ale fungovala správně.
Metody
out.useDelimiter("\\s*[;,\n\r\t]\\s*")
Otevření vstupu
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
vstup=input.next();
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
    ...
    long aLong = sc.nextLong();
    ...
}


Standardní vstup a výstup

System.out
System.out.print("Ahoj!");
System.out.println("Vypíše řádek na obrazovku!");
System.in
System.in.read();


Viz také


Zdroje

  1. JavaPractices.com → Reading and writing text files
  2. Java Tutorial → Scanner
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje