/*
|
neon-fm - File management extensions to Neon
|
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 <https://www.gnu.org/licenses/>.
|
*/
|
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 {
|
|
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;
|
}
|
}
|
}
|