Signal-Android/app/src/main/java/org/thoughtcrime/securesms/util/FileUtils.java

62 lines
1.6 KiB
Java
Raw Normal View History

package org.thoughtcrime.securesms.util;
2019-12-28 16:08:11 +01:00
import androidx.annotation.Nullable;
2018-04-13 02:17:48 +02:00
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public final class FileUtils {
static {
System.loadLibrary("native-utils");
}
public static native int getFileDescriptorOwner(FileDescriptor fileDescriptor);
static native int createMemoryFileDescriptor(String name);
public static byte[] getFileDigest(FileInputStream fin) throws IOException {
try {
MessageDigest digest = MessageDigest.getInstance("SHA256");
byte[] buffer = new byte[4096];
int read = 0;
while ((read = fin.read(buffer, 0, buffer.length)) != -1) {
digest.update(buffer, 0, read);
}
return digest.digest();
} catch (NoSuchAlgorithmException e) {
throw new AssertionError(e);
}
}
2018-04-13 02:17:48 +02:00
2019-12-28 16:08:11 +01:00
public static void deleteDirectoryContents(@Nullable File directory) {
2018-04-13 02:17:48 +02:00
if (directory == null || !directory.exists() || !directory.isDirectory()) return;
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) deleteDirectory(file);
else file.delete();
}
}
}
2020-03-26 20:38:27 +01:00
public static boolean deleteDirectory(@Nullable File directory) {
2018-04-13 02:17:48 +02:00
if (directory == null || !directory.exists() || !directory.isDirectory()) {
2020-03-26 20:38:27 +01:00
return false;
2018-04-13 02:17:48 +02:00
}
deleteDirectoryContents(directory);
2020-03-26 20:38:27 +01:00
return directory.delete();
2018-04-13 02:17:48 +02:00
}
}