Ce code permet de sélectionner, lire, modifier et enregistrer un fichier texte.
createTxtFile.java
package create_txt_file;
import java.awt.EventQueue;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
public class createTxtFile{
private JFrame frame;
JFileChooser j = new JFileChooser();
private JButton btnEnregistrer;
private JButton btnSelectionner;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
createTxtFile window = new createTxtFile();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public createTxtFile() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
//Début paramétrage de la fênetre
frame = new JFrame();
frame.setVisible(true);
frame.setTitle("Ma fênetre");
frame.setBounds(100, 100, 400, 212);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
//Zone de texte positionner dans un JScrollPane en cas de débordement.
JTextArea textArea = new JTextArea();
textArea.setBounds(10, 10, 366, 124);
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setBounds(56, 5, 288, 129);
frame.getContentPane().add(scrollPane);
//Bouton permettant de sélectionner un fichier pour le visualiser ou le modifier.
btnSelectionner = new JButton("Sélectionner un fichier");
btnSelectionner.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
j.showSaveDialog(null); //Ouvre le selectionneur de fichier
String chemin = j.getSelectedFile().getAbsolutePath();
if(chemin.substring(chemin.length() - 4).equals(".txt")) {
String contentOfTheFile = lire(chemin);
textArea.setText(contentOfTheFile);
btnEnregistrer.setVisible(true);
}
else {
System.out.println("Only .txt files allowed.");
}
}catch(Exception error) {
System.out.println("Error");
}
}
});
btnSelectionner.setBounds(10, 144, 171, 21);
frame.getContentPane().add(btnSelectionner);
//Bouton permettant d'enregistrer les modifications effectuées depuis la zone de texte.
btnEnregistrer = new JButton("Enregistrer");
btnEnregistrer.setVisible(false);
btnEnregistrer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ecrire(j.getSelectedFile().getAbsolutePath(),textArea.getText());
frame.dispose();
}
});
btnEnregistrer.setBounds(274, 144, 102, 21);
frame.getContentPane().add(btnEnregistrer);
}
private void ecrire(String chemin, String textAreaValue) {
//ECRIRE
try {
//Si le fichier n'existe pas, il est créé.
//fileWriter = new FileWriter("C:\\\\Users...\\\\fichier.txt",true); Permet d'écrire à la suite sans écraser
//fileWriter = new FileWriter("C:\\\\Users...\\\\fichier.txt"); Ecrit en écrasant
FileWriter fileWriter = new FileWriter(chemin);
BufferedWriter writer = new BufferedWriter(fileWriter);
writer.write(textAreaValue);
writer.newLine();
writer.close();
}catch(IOException e) {
System.out.println("Erreur");
}
}
private String lire(String chemin) {
//LIRE
try {
FileReader fileReader = new FileReader(chemin);
BufferedReader reader = new BufferedReader(fileReader);
String line;
String total="";
while((line = reader.readLine()) != null) {
total = total + line + "\\n";
}
reader.close();
System.out.println(total);
return total;
}catch(FileNotFoundException e) {
System.out.println("File not found");
}catch(IOException e) {
System.out.println("File cannot be accessed");
}
return "";
}
}