/* 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 . */ package de.uhilger.fm; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URLDecoder; import java.util.logging.Level; import java.util.logging.Logger; /** * Dateien und Ordner anlegen. * Ggf. deren Inhalt schreiben. * * @author Ulrich Hilger * @version 0.1, 07.11.2024 */ public class Writer { /** * Einen Ordner anlegen, wenn er noch nicht exisitert * * @param file der Ordner, der angelegt werden soll * @return 0, wenn der Ordner angelegt wurde, -1 wenn nicht */ public int newFolder(File file) { if (!file.exists()) { file.mkdir(); return 0; } else { return -1; } } /** * Datei speichern. 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 * @param content * @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; } } }