À l'aide de FileWriter et BufferedWriter de compensation de fichier pour une raison quelconque?
Pour une raison quelconque, quand je crée un nouveau BufferedWriter et FileWriter dans mon programme (Même si je ne l'ai pas utilisé pour écrire quoi que ce soit encore), il efface le fichier que j'ai choisi de tout, c'est le texte.
selectedFile est déterminé par un JFileChooser.
public static File selectedFile;
public static void Encrypt() throws Exception {
try {
//if I comment these two writers out the file is not cleared.
FileWriter fw = new FileWriter(selectedFile.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
List<String> lines = Files.readAllLines(Paths.get(selectedFile.toString()),
Charset.defaultCharset());
for (String line : lines) {
System.out.println(line);
System.out.println(AESencrp.encrypt(line));
/*file is cleared regardless of whether or not these are commented out or
* not, as long as I create the new FileWriter and BufferedWriter the file
* is cleared regardless.*/
//bw.write(AESencrp.encrypt(line));
//bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
AESencrp.crypter est juste un cryptage de classe que j'ai, cela n'affectera pas. Si je crée un nouveau FileWriter et BufferedWriter alors cette boucle n'est pas encore course (Au moins je ne le pense pas, comme je n'ai pas le chiffrement de la ligne ou le contenu original du fichier imprimé, qui s'imprime si je n'ai pas créé le new FileWriter/BufferedWriter.)
for (String line : lines) {
System.out.println(line);
System.out.println(AESencrp.encrypt(line));
/*file is cleared regardless of whether or not these are commented out or
* not, as long as I create the new FileWriter and BufferedWriter the file
* is cleared regardless.*/
//bw.write(AESencrp.encrypt(line));
//bw.close();
}
OriginalL'auteur None None | 2013-06-21
Vous devez vous connecter pour publier un commentaire.
C'est parce que le constructeur de
FileWriter
vous utilisez tronque le fichier s'il existe déjà.Si vous souhaitez ajouter les données au lieu de cela, utiliser:
OriginalL'auteur fge
Il semble que vous voulez ajouter dans le fichier, et non pas le remplacer. Utiliser le bon
FileWriter
constructeur qui prend unboolean
sur l'opportunité d'ajouter.Le constructeur que vous utilisez, sans
boolean
, par défaut à "écraser" le mode. Dès que vous créez leFileWriter
dans le mode de remplacement, il efface le fichier de sorte qu'il peut commencer à écrire dès le début.Passant
true
comme deuxième argument va vous permettre d'ajouter, au lieu de les remplacer.OriginalL'auteur rgettman
vous l'ouvrez pour écrire (pour l'ajout d'utiliser le constructeur avec l'option " ajout). qu'attendez-vous de ce que l'autre personne devrait se produire?
Plus votre outcommented
close()
est à la mauvaise place. il devrait être en dehors de la boucle.OriginalL'auteur AlexWien