J'ai une méthode qui reçoit du texte à partir d'une JTextarea, créez un fichier et écrivez un texte sous forme de texte sous forme de code ci-dessous: et un filtre de fichier TXT p> public class TxtFilter extends FileFilter{
@Override
public boolean accept(File f){
return f.getName().toLowerCase().endsWith(".txt")||f.isDirectory();
}
@Override
public String getDescription(){
return "Text files (*.txt)";
}
}
4 Réponses :
J'ai fait cette fonction à cet effet: alors vous pouvez utiliser la fonction par exemple de cette manière: p>
Merci mais j'ai une exception exécutée: exception dans le fil "AWT-EventQuue-0" Java.lang.nullPointereException à Provegrafica.Provaframepop.createtext (Provaframepop.java:145)
Cela ne serait pas échouer si le nom de fichier contient "".
Vous m'avez signalé que la vérification des fichiers existants ne fonctionne pas. Je suis désolé, je ne l'ai pas pensé quand je vous ai suggéré de remplacer la ligne avec: p> avec ce remplacement, il n'est pas nécessaire maintenant de remplacer le Ligne de Maintenant, le programme devrait fonctionner comme prévu. P> J'ai oublié de mentionner que vous devez commenter la ligne: p > de cette manière, vous créez un fichier vide, avec le fichier juste après cette ligne, il y a : Aussi, sur le constructeur code> bufferedWriter code>, vous pouvez ajouter une chaîne pour le nom du fichier (ce n'est pas Possible sur bufferedWriter code>.
Maintenant, remplacez ceci: p>
bufferedWriter code>, ajout
.txt code> pour l'extension. Ensuite, remplacez cette ligne avec la ligne dans le code que vous avez posté (avec
bufferedWriter OUT = nouveau bufferedWriter (nouveau FileWriter (SFILE)); Code> au lieu de
BufferedWriter OUT = nouveau bufferedWriter (Nouveau FileWriter (SFILE + ".txt")); code>). P>
Classe code>. p>
BufferedWriter OUT = Nouveau bufferedWriter (nouveau FileWriter (SFILE)); code>.
Avec cette ligne, vous créez à nouveau le même fichier. La procédure d'écriture se passe deux fois! Je pense qu'il est inutile d'insérer deux instructions qui font la même tâche. P>
fichier code> constructeur), c'est la raison pour laquelle j'ai ajouté
+ ". txt" code> (l'extension) sur
sftile p> < / p>
Très étrange! Sur mon système, tout fonctionne ..J'ai édité la réponse.
Merci beaucoup pour vos infos utiles! Vous avez raison, j'ai écrit deux fois le fichier, il n'y a aucune raison pour cela. Maintenant, les fichiers sont correctement enregistrés avec suffixe ".txt
Il n'y a qu'une seule petite question à gauche: je peux maintenant enregistrer automatiquement avec une extension .txt, mais je n'ai pas de .txt dans le nom de description du filechooser. Cela signifie que lorsque je sauvegarder à nouveau avec un nom de fichier précédent, il ne vous invite jamais que le fichier existe déjà et écrase toujours l'exemple de fichier précédent: Supposons que je souhaite enregistrer un fichier comme nom = test: il enregistre maintenant test.txt et créez ce fichier. Si je veux enregistrer un autre fichier avec le même nom, il ne reçoit pas de fichier de test comme déjà écrit car celui enregistré est maintenant test.txt
@Albertocepsut j'ai compris. Mais vous avez remplacé la chaîne que je vous ai suggérée avec "BufferedWriter Out = nouveau BufferedWriter (nouveau FileWriter (SFILE +". TXT "));" et commentaire la ligne "sfile.creeneenewfile ();" aussi dans la boucle "autre"?
Oui, je l'ai fait, mais le problème est que, de cette façon, il n'a jamais trouvé de fichier déjà existant afin de ne jamais demander écraser.
Pas de problème, pardonnez-moi parce que je n'avais pas pensé d'abord le contrôle si le fichier existe.
Je viens d'utiliser ce
Ceci est une fonction utilitaire de l'un de mes programmes que vous pouvez utiliser au lieu de jfilechooser.getselectedfile code>, pour obtenir l'extension également.
/**
* Returns the selected file from a JFileChooser, including the extension from
* the file filter.
*/
public static File getSelectedFileWithExtension(JFileChooser c) {
File file = c.getSelectedFile();
if (c.getFileFilter() instanceof FileNameExtensionFilter) {
String[] exts = ((FileNameExtensionFilter)c.getFileFilter()).getExtensions();
String nameLower = file.getName().toLowerCase();
for (String ext : exts) { // check if it already has a valid extension
if (nameLower.endsWith('.' + ext.toLowerCase())) {
return file; // if yes, return as-is
}
}
// if not, append the first extension from the selected filter
file = new File(file.toString() + '.' + exts[0]);
}
return file;
}