/*
fm - File management class library
Copyright (C) 2024 Ulrich Hilger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
Eine existierende Datei gleichen Namens wird * zuvor geloescht (= Ueberschreiben).
* *Wenn Aenderungen in eine schon existierende Datei gespeichert werden * sollen, ist es noetig, die existierende Datei mit dem neuen Inhalt zu * ueberschreiben, so, wie es diese Methode ausfuehrt.
* *Soll statdessen eine Datei neu erstellt werden und wird dabei also unterstellt, dass * unter ihrem Namen am Ablageort noch keine Datei gleichen Namens existiert, muss * vor der Verwendung dieser Methode sichergestellt werden, dass es so ist.
* * @param file die Datei, in die gespeichert werden soll * @param content der zu speichernde Inhalt * @return 0, wenn erfolgreich, sonst -1 */ public int speichern(File file, String content) { try { if (file.exists()) { /* muss delete() sein? pruefen: ueberschreibt der FileWriter den alten Inhalt oder entsteht eine unerwuenschte Mischung aus altem und neuem Inhalt? */ file.delete(); } else { file.getParentFile().mkdirs(); } String decoded = URLDecoder.decode(content, "UTF-8"); byte[] bytes = decoded.getBytes(); file.createNewFile(); try (OutputStream os = new FileOutputStream(file)) { os.write(bytes); os.flush(); } return 0; } catch (IOException ex) { Logger.getLogger(Writer.class.getName()).log(Level.SEVERE, null, ex); return -1; } } }