logo

Práce se soubory v Javě pomocí FileWriter a FileReader

Třídy Java FileWriter a FileReader se používají k zápisu a čtení dat z textových souborů (jsou Proud postav třídy). Doporučuje se ne k použití tříd FileInputStream a FileOutputStream, pokud musíte číst a zapisovat jakékoli textové informace, protože se jedná o třídy proudu Byte.
 

FileWriter
FileWriter je užitečný k vytvoření souboru, který do něj zapisuje znaky. 

  • Tato třída dědí z třídy OutputStream.
  • Konstruktoři této třídy předpokládají, že výchozí kódování znaků a výchozí velikost bajtové vyrovnávací paměti jsou přijatelné. Chcete-li tyto hodnoty zadat sami, vytvořte OutputStreamWriter na FileOutputStream. 
     
  • FileWriter je určen pro psaní proudů znaků. Pro zápis proudů nezpracovaných bajtů zvažte použití FileOutputStream.
  • FileWriter vytvoří výstupní soubor, pokud ještě není přítomen.


Konstruktéři:  



    FileWriter (soubor souboru) -Vytvoří objekt FileWriter daný objektem File.FileWriter (logická příloha souboru souboru) -vytvoří objekt FileWriter daný objektem File.FileWriter (FileDescriptor fd) -vytvoří objekt FileWriter spojený s deskriptorem souboru.FileWriter (String fileName) -vytvoří objekt FileWriter s názvem souboru.FileWriter (logická příloha s řetězcem název souboru) -Vytvoří objekt FileWriter s názvem souboru s logickou hodnotou označující, zda připojit zapsaná data či nikoli.


Metody:  

    public void write (int c) vyvolá IOException -Napíše jeden znak.public void write (char [] stir) vyvolá IOException -Zapíše pole znaků.public void write(String str) vyvolá IOException -Zapíše řetězec.public void write(String str int off int len) vyvolá IOException - Zapíše část řetězce. Zde off je offset, od kterého začít psát znaky a len je počet znaků, které se mají napsat.public void flush() vyvolá výjimku IOExceptionspláchne potokpublic void close() vyvolá IOExceptionnejprve vyprázdní proud a poté zavře zapisovač.


Čtení a zápis probíhá znak po znaku, což zvyšuje počet I/O operací a ovlivňuje výkon systému. BufferedWriter lze použít spolu s FileWriter ke zvýšení rychlosti provádění.
Následující program popisuje, jak vytvořit textový soubor pomocí FileWriter
 

Java
// Creating a text File using FileWriter import java.io.FileWriter; import java.io.IOException; class CreateFile {  public static void main(String[] args) throws IOException  {  // Accept a string   String str = 'File Handling in Java using '+  ' FileWriter and FileReader';  // attach a file to FileWriter   FileWriter fw=new FileWriter('output.txt');  // read character wise from string and write   // into FileWriter   for (int i = 0; i < str.length(); i++)  fw.write(str.charAt(i));  System.out.println('Writing successful');  //close the file   fw.close();  } }  

FileReader

FileReader je užitečný pro čtení dat ve formě znaků z „textového“ souboru. 

  • Tato třída je zděděna od třídy InputStreamReader.
  • Konstruktoři této třídy předpokládají, že výchozí kódování znaků a výchozí velikost bajtové vyrovnávací paměti jsou vhodné. Chcete-li tyto hodnoty zadat sami, vytvořte InputStreamReader na FileInputStream. 
     
  • FileReader je určen pro čtení proudů znaků. Pro čtení proudů nezpracovaných bajtů zvažte použití FileInputStream.


Konstruktéři:  

    FileReader (soubor souboru) -Vytvoří FileReader s daným souborem, ze kterého se má čístFileReader(FileDescripter fd) -Vytvoří nový FileReader, který má FileDescripter ke čteníFileReader(String fileName) -Vytvoří nový FileReader s názvem souboru, ze kterého se má číst


Metody:  

    public int read () vyvolá IOException -Čte jeden znak. Tato metoda bude blokovat, dokud nebude k dispozici znak, nedojde k chybě I/O nebo dokud není dosaženo konce proudu.public int read(char[] cbuff) vyvolá IOException -Čte znaky do pole. Tato metoda bude blokovat, dokud nebude k dispozici nějaký vstup, nedojde k chybě I/O nebo dokud není dosaženo konce toku.public abstract int read(char[] buff int off int len) vyvolá IOException -Přečte znaky do části pole. Tato metoda bude blokovat, dokud nebude k dispozici nějaký vstup, nedojde k chybě I/O nebo dokud není dosaženo konce toku. 
    Parametry: 
    cbuf - Cílová vyrovnávací paměť 
    off - Offset, od kterého se mají začít ukládat znaky 
    len - Maximální počet znaků ke čtení 
     public void close() vyvolá IOExceptionzavře čtenář.public long skip (long n) vyvolá IOException -Přeskočí znaky. Tato metoda bude blokovat, dokud nebudou k dispozici některé znaky, nedojde k chybě I/O nebo není dosaženo konce datového proudu. 
    Parametry: 
    n – Počet znaků, které se mají přeskočit 


Následující program popisuje, jak číst z „textového“ souboru pomocí FileReader
 

Java
// Reading data from a file using FileReader import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; class ReadFile {  public static void main(String[] args) throws IOException  {  // variable declaration  int ch;  // check if File exists or not  FileReader fr=null;  try  {  fr = new FileReader('text');  }  catch (FileNotFoundException fe)  {  System.out.println('File not found');  }  // read from FileReader till the end of file  while ((ch=fr.read())!=-1)  System.out.print((char)ch);  // close the file  fr.close();  } } 

 

Vytvořit kvíz