diff --git a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java index e4850d7fa8e..3464f108111 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java @@ -26,6 +26,7 @@ import org.schabi.newpipe.extractor.localization.ContentCountry; import org.schabi.newpipe.extractor.localization.Localization; import org.schabi.newpipe.util.FilePickerActivityHelper; +import org.schabi.newpipe.util.FilePathUtils; import org.schabi.newpipe.util.ZipHelper; import java.io.File; @@ -67,7 +68,7 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro .putExtra(FilePickerActivityHelper.EXTRA_MODE, FilePickerActivityHelper.MODE_FILE); final String path = defaultPreferences.getString(importExportDataPathKey, ""); - if (isValidPath(path)) { + if (FilePathUtils.isValidDirectoryPath(path)) { i.putExtra(FilePickerActivityHelper.EXTRA_START_PATH, path); } startActivityForResult(i, REQUEST_IMPORT_PATH); @@ -82,7 +83,7 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro .putExtra(FilePickerActivityHelper.EXTRA_MODE, FilePickerActivityHelper.MODE_DIR); final String path = defaultPreferences.getString(importExportDataPathKey, ""); - if (isValidPath(path)) { + if (FilePathUtils.isValidDirectoryPath(path)) { i.putExtra(FilePickerActivityHelper.EXTRA_START_PATH, path); } startActivityForResult(i, REQUEST_EXPORT_PATH); @@ -254,14 +255,6 @@ private void importDatabase(final String filePath) { } } - private boolean isValidPath(final String path) { - if (path == null || path.isEmpty()) { - return false; - } - final File file = new File(path); - return file.exists() && file.isDirectory(); - } - private void setImportExportDataPath(final File file) { final String directoryPath; if (!file.isDirectory()) { diff --git a/app/src/main/java/org/schabi/newpipe/util/FilePathUtils.java b/app/src/main/java/org/schabi/newpipe/util/FilePathUtils.java new file mode 100644 index 00000000000..4162e563af5 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/FilePathUtils.java @@ -0,0 +1,22 @@ +package org.schabi.newpipe.util; + +import java.io.File; + +public final class FilePathUtils { + private FilePathUtils() { } + + + /** + * Check that the path is a valid directory path and it exists. + * + * @param path full path of directory, + * @return is path valid or not + */ + public static boolean isValidDirectoryPath(final String path) { + if (path == null || path.isEmpty()) { + return false; + } + final File file = new File(path); + return file.exists() && file.isDirectory(); + } +} diff --git a/app/src/test/java/org/schabi/newpipe/util/FilePathHelperTest.java b/app/src/test/java/org/schabi/newpipe/util/FilePathHelperTest.java new file mode 100644 index 00000000000..7cdc5f8552b --- /dev/null +++ b/app/src/test/java/org/schabi/newpipe/util/FilePathHelperTest.java @@ -0,0 +1,32 @@ +package org.schabi.newpipe.util; + +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class FilePathHelperTest { + @Test + public void testIsValidDirectoryPath() throws IOException { + // path that exists + final File dir1 = Files.createTempDirectory("dir1").toFile(); + assertTrue(FilePathUtils.isValidDirectoryPath(dir1.getAbsolutePath())); + + // a directory in above path that exists + final File subDir = Files.createDirectory(dir1.toPath().resolve("subdir")).toFile(); + assertTrue(FilePathUtils.isValidDirectoryPath(subDir.getAbsolutePath())); + + // a directory in above path that doesn't exist + assertFalse(FilePathUtils.isValidDirectoryPath(dir1.toPath().resolve("not-exists-subdir"). + toFile().getAbsolutePath())); + + // file is not a valid direcotry path + final File tempFile = Files.createFile(dir1.toPath().resolve("simple_file")).toFile(); + assertFalse(FilePathUtils.isValidDirectoryPath(tempFile.getAbsolutePath())); + } + +}