mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2025-01-14 11:01:06 +01:00
45 lines
1.6 KiB
Java
45 lines
1.6 KiB
Java
|
package nodomain.freeyourgadget.gadgetbridge.util;
|
||
|
|
||
|
import java.io.File;
|
||
|
import java.io.FileInputStream;
|
||
|
import java.io.FileOutputStream;
|
||
|
import java.io.IOException;
|
||
|
import java.nio.channels.FileChannel;
|
||
|
|
||
|
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||
|
|
||
|
public class FileUtils {
|
||
|
/**
|
||
|
* Copies the the given sourceFile to destFile, overwriting it, in case it exists.
|
||
|
* @param sourceFile
|
||
|
* @param destFile
|
||
|
* @throws IOException
|
||
|
*/
|
||
|
public static void copyFile(File sourceFile, File destFile) throws IOException {
|
||
|
if (!sourceFile.exists()) {
|
||
|
throw new IOException("Does not exist: " + sourceFile.getAbsolutePath());
|
||
|
}
|
||
|
copyFile(new FileInputStream(sourceFile), new FileOutputStream(destFile));
|
||
|
}
|
||
|
|
||
|
private static void copyFile(FileInputStream sourceStream, FileOutputStream destStream) throws IOException {
|
||
|
try (FileChannel fromChannel = sourceStream.getChannel(); FileChannel toChannel = destStream.getChannel()) {
|
||
|
fromChannel.transferTo(0, fromChannel.size(), toChannel);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the existing external storage dir.
|
||
|
* @throws IOException when the directory is not available
|
||
|
*/
|
||
|
public static File getExternalFilesDir() throws IOException {
|
||
|
File dir = GBApplication.getContext().getExternalFilesDir(null);
|
||
|
if (dir == null) {
|
||
|
throw new IOException("Unable to access external files dir: null");
|
||
|
}
|
||
|
if (!dir.exists() && !dir.mkdirs()) {
|
||
|
throw new IOException("Unable to access external files dir: does not exist");
|
||
|
}
|
||
|
return dir;
|
||
|
}
|
||
|
}
|