logo

Création d'un fichier à l'aide de FileOutputStream

La classe FileOutputStream appartient au flux d'octets et stocke les données sous forme d'octets individuels. Il peut être utilisé pour créer des fichiers texte. Un fichier représente le stockage de données sur un deuxième support de stockage comme un disque dur ou un CD. La disponibilité ou non d'un fichier ou sa création dépend de la plate-forme sous-jacente. Certaines plates-formes en particulier permettent à un fichier d'être ouvert en écriture par un seul FileOutputStream (ou d'autres objets d'écriture de fichier) à la fois. Dans de telles situations, les constructeurs de cette classe échoueront si le fichier impliqué est déjà ouvert. FileOutputStream est destiné à écrire des flux d'octets bruts tels que des données d'image. Pour écrire des flux de caractères, envisagez d'utiliser FileWriter. Méthodes importantes :
    void close() : Ferme ce flux de sortie de fichier et libère toutes les ressources système associées à ce flux. protected void finalize() : Nettoie la connexion au fichier et garantit que la méthode close de ce flux de sortie de fichier est appelée lorsqu'il n'y a plus de références à ce flux. void write(byte[] b) : Écrit les octets b.length du tableau d'octets spécifié dans ce flux de sortie de fichier. void write(byte[] b int off int len) : Écrit len ​​octets du tableau d'octets spécifié en commençant au décalage dans ce flux de sortie de fichier. void write(int b) : Écrit l'octet spécifié dans le flux de sortie de ce fichier.
Les étapes suivantes doivent être suivies pour créer un fichier texte contenant certains caractères (ou texte) :
    Lecture des données : First of all data should be read from the keyboard. For this purpose associate the keyboard to some input stream class. The code for using DataInputSream class for reading data from the keyboard is as:
    DataInputStream dis =new DataInputStream(System.in);
    Here System.in represent the keyboard which is linked with DataInputStream object Envoyer des données à OutputStream : Now associate a file where the data is to be stored to some output stream. For this take the help of FileOutputStream which can send data to the file. Attaching the file.txt to FileOutputStream can be done as:
    FileOutputStream fout=new FileOutputStream(file.txt);
    Lecture des données de DataInputStream : The next step is to read data from DataInputStream and write it into FileOutputStream . It means read data from dis object and write it into fout object as shown here:
    ch=(char)dis.read(); fout.write(ch);
    Fermez le fichier :Enfin, tout fichier doit être fermé après avoir effectué des opérations d'entrée ou de sortie, sinon les données pourraient être corrompues. La fermeture du fichier se fait en fermant les flux associés. Par exemple fout.close() : fermera le FileOutputStream il n'y a donc aucun moyen d'écrire des données dans le fichier.
Mise en œuvre: Java
//Java program to demonstrate creating a text file using FileOutputStream import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; class Create_File {  public static void main(String[] args) throws IOException   {  //attach keyboard to DataInputStream  DataInputStream dis=new DataInputStream(System.in);  // attach file to FileOutputStream  FileOutputStream fout=new FileOutputStream('file.txt');  //attach FileOutputStream to BufferedOutputStream  BufferedOutputStream bout=new BufferedOutputStream(fout1024);  System.out.println('Enter text (@ at the end):');  char ch;  //read characters from dis into ch. Then write them into bout.  //repeat this as long as the read character is not @  while((ch=(char)dis.read())!='@')  {  bout.write(ch);  }  //close the file  bout.close();  } } 
If the Program is executed again the old data of file.txt will be lost and any recent data is only stored in the file. If we don’t want to lose the previous data of the file and just append the new data to the end of already existing data and this can be done by writing true along with file name.
FileOutputStream fout=new FileOutputStream(file.txttrue); 

Améliorer l'efficacité à l'aide de BufferedOutputStream

Normally whenever we write data to a file using FileOutputStream as:
fout.write(ch);
Here the FileOutputStream is invoked to write the characters into the file. Let us estimate the time it takes to read 100 characters from the keyboard and write all of them into a file.
  • Supposons que les données sont lues du clavier vers la mémoire à l'aide de DataInputStream et qu'il faut 1 seconde pour lire 1 caractère en mémoire et que ce caractère est écrit dans le fichier par FileOutputStream en passant 1 seconde supplémentaire.
  • Ainsi, la lecture et l’écriture d’un fichier prendront 200 secondes. Cela fait perdre beaucoup de temps. D'un autre côté, si les classes Buffered sont utilisées, elles fournissent un tampon qui est d'abord rempli de caractères du tampon qui peuvent être immédiatement écrits dans le fichier. Les classes tamponnées doivent être utilisées en connexion avec d’autres classes de flux.
  • First the DataInputStream reads data from the keyboard by spending 1 sec for each character. This character is written into the buffer. Thus to read 100 characters into a buffer it will take 100 second time. Now FileOutputStream will write the entire buffer in a single step. So reading and writing 100 characters took 101 sec only. In the same way reading classes are used for improving the speed of reading operation.  Attaching FileOutputStream to BufferedOutputStream as:
    BufferedOutputStream bout=new BufferedOutputStream(fout1024);
    Here the buffer size is declared as 1024 bytes. If the buffer size is not specified then a default size of 512 bytes is used
Méthodes importantes de la classe BufferedOutputStream :
    void flush() : Vide ce flux de sortie mis en mémoire tampon. void write(byte[] b int off int len) : Écrit len ​​octets du tableau d'octets spécifié en commençant au décalage dans ce flux de sortie mis en mémoire tampon. void write(int b) : Écrit l'octet spécifié dans ce flux de sortie mis en mémoire tampon.
Sortir:
C:> javac Create_File.java C:> java Create_File Enter text (@ at the end): This is a program to create a file @ C:/> type file.txt This is a program to create a file 
Articles connexes :
  • CharacterStream et ByteStream
  • Classe de fichiers en Java
  • Gestion de fichiers en Java à l'aide de FileWriter et FileReader
Créer un quiz