mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-21 22:02:06 +01:00
Add FileUtils.maybeCreateFileWithParentDirectories(File)
This commit is contained in:
parent
a70ae7ab8e
commit
fb3009adb2
3 changed files with 26 additions and 28 deletions
|
@ -207,4 +207,28 @@ public final class FileUtils {
|
|||
throw new IOException("Could not delete file " + file);
|
||||
}
|
||||
}
|
||||
|
||||
public static void maybeCreateFileWithParentDirectories(File file) throws IOException {
|
||||
File parent = file.getParentFile();
|
||||
if (!parent.exists() && !parent.mkdirs()) {
|
||||
throw new IOException("Cannot create directory " + parent);
|
||||
}
|
||||
|
||||
if (file.isFile()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!file.exists()) {
|
||||
if (file.createNewFile()) {
|
||||
return;
|
||||
}
|
||||
throw new IOException("Cannot create file " + file);
|
||||
}
|
||||
|
||||
if (file.isDirectory()) {
|
||||
throw new IOException("File " + file + " exists, but is a directory.");
|
||||
} else {
|
||||
throw new IOException("File " + file + " exists, but is neither a file nor a directory");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -120,26 +120,12 @@ public class FileBasedOpenPgpMetadataStore extends AbstractOpenPgpMetadataStore
|
|||
|
||||
static void writeFingerprintsAndDates(Map<OpenPgpV4Fingerprint, Date> data, File destination)
|
||||
throws IOException {
|
||||
|
||||
if (data == null || data.isEmpty()) {
|
||||
FileUtils.maybeDeleteFileOrThrow(destination);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!destination.exists()) {
|
||||
File parent = destination.getParentFile();
|
||||
if (!parent.exists() && !parent.mkdirs()) {
|
||||
throw new IOException("Cannot create directory " + parent.getAbsolutePath());
|
||||
}
|
||||
|
||||
if (!destination.createNewFile()) {
|
||||
throw new IOException("Cannot create file " + destination.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
if (destination.isDirectory()) {
|
||||
throw new IOException("File " + destination.getAbsolutePath() + " is a directory.");
|
||||
}
|
||||
FileUtils.maybeCreateFileWithParentDirectories(destination);
|
||||
|
||||
BufferedWriter writer = null;
|
||||
try {
|
||||
|
|
|
@ -102,19 +102,7 @@ public class FileBasedOpenPgpTrustStore extends AbstractOpenPgpTrustStore {
|
|||
FileUtils.maybeDeleteFileOrThrow(file);
|
||||
}
|
||||
|
||||
File parent = file.getParentFile();
|
||||
if (!parent.exists() && !parent.mkdirs()) {
|
||||
throw new IOException("Cannot create directory " + parent.getAbsolutePath());
|
||||
}
|
||||
if (!file.exists()) {
|
||||
if (!file.createNewFile()) {
|
||||
throw new IOException("Cannot create file " + file.getAbsolutePath());
|
||||
}
|
||||
} else {
|
||||
if (file.isDirectory()) {
|
||||
throw new IOException("File " + file.getAbsolutePath() + " is a directory.");
|
||||
}
|
||||
}
|
||||
FileUtils.maybeCreateFileWithParentDirectories(file);
|
||||
|
||||
BufferedWriter writer = null;
|
||||
try {
|
||||
|
|
Loading…
Reference in a new issue