Java: Textový vstup a výstup

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Scanner: Desetinná čísla s čárkou, hasNextDouble().)
(Scanner: Upraven oddělovač pro čtení „pseudo-CSV“.)
Řádka 44: Řádka 44:
 
== Scanner ==
 
== Scanner ==
 
* 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 1.5 &mdash; nahrazuje <tt>BufferedReader</tt>.
+
* Zaveden od Javy 5 &mdash; nahrazuje <tt>BufferedReader</tt>.
  
 
; Metody:
 
; Metody:
Řádka 59: Řádka 59:
 
* <code>boolean hasNextDouble()</code>
 
* <code>boolean hasNextDouble()</code>
 
** následuje na vstupu desetinné číslo?
 
** následuje na vstupu desetinné číslo?
* <code>useDelimiter(String delim)</code>
+
* <code>useDelimiter(String delim)</code>, resp. <code>useDelimiter(Pattern delim)</code>
** Například při čtení formátu CSV:
+
** Oddělovač položek na řádku, například:<br /><code>out.useDelimiter(",");</code>
  out.useDelimiter(",");
+
** Jako oddělovač lze použít i [http://cs.wikipedia.org/wiki/Regul%C3%A1rn%C3%AD_v%C3%BDraz regulární výraz (&rarr; Wikipedia.org)] reprezentovaný třídou <code>[https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html Pattern]</code>.
 +
** Pro načítání jednoduchého CSV lze použít (pozor, není to plnohodnotné čtení CSV, ale mnohdy stačí):
 +
  out.useDelimiter("\\s*[;,\n\r\t]\\s*")
  
 
; Otevření vstupu:
 
; Otevření vstupu:

Verze z 20. 11. 2014, 10:24

Obsah

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();

Scanner

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();
    ...
}

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