|
|
@@ -23,16 +23,16 @@ import net.ranides.assira.text.Strings;
|
|
|
public final class PathHelper {
|
|
|
|
|
|
private PathHelper() { }
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
- * Lista reprezentująca ścieżkę do pliku rozbitą na fragmenty (gdzie każdy
|
|
|
+ * Lista reprezentująca ścieżkę do pliku rozbitą na fragmenty (gdzie każdy
|
|
|
* fragment to jeden poziom w systemie plików). Kolejność elementów w liście
|
|
|
- * odpowiada kolejności elementów w "standardowej" ścieżce - pierwszy element
|
|
|
+ * odpowiada kolejności elementów w "standardowej" ścieżce - pierwszy element
|
|
|
* to root, następny to podkatalog... i tak aż nazwy wskazywanego pliku,
|
|
|
* która znajduje się na ostatniej pozycji.
|
|
|
- *
|
|
|
+ *
|
|
|
* <p>
|
|
|
- * Przykładowo ścieżka {@code "/a/b/c/d.txt"} jest reprezentowana jako
|
|
|
+ * Przykładowo ścieżka {@code "/a/b/c/d.txt"} jest reprezentowana jako
|
|
|
* {@code [ "a", "b", "c", "d.txt" ]}
|
|
|
* </p>
|
|
|
*/
|
|
|
@@ -42,17 +42,17 @@ public final class PathHelper {
|
|
|
FilePath(List<String> components) {
|
|
|
this.components = components.toArray(new String[components.size()]);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
public String get(int index) {
|
|
|
return components[index];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
public int size() {
|
|
|
return components.length;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Konwertuje ścieżkę na standardowy obiekt {@link File}
|
|
|
* @return
|
|
|
@@ -60,14 +60,14 @@ public final class PathHelper {
|
|
|
public File toFile() {
|
|
|
return new File(StringUtils.join(components, File.separator));
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Wyciąga z podanej ścieżki nazwę dysku (litera+dwukropek). Metoda tylko dla systemów z
|
|
|
+ * Wyciąga z podanej ścieżki nazwę dysku (litera+dwukropek). Metoda tylko dla systemów z
|
|
|
* rodziny Windows. Na systemach unix-like zwraca pusty String.
|
|
|
- * @param file
|
|
|
- * @return
|
|
|
+ * @param file
|
|
|
+ * @return
|
|
|
*/
|
|
|
public static String getDrive(File file) {
|
|
|
String path = file.getPath();
|
|
|
@@ -111,14 +111,14 @@ public final class PathHelper {
|
|
|
* @throws PathConvertException jeśli nie udało się pobrać kanonicznej ścieżki do pliku
|
|
|
*/
|
|
|
public static List<String> explode(String path) throws PathConvertException {
|
|
|
- return explode(new File(path));
|
|
|
+ return explode(asFile(path));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Zwraca względną ścieżkę do podanego pliku względem katalogu domowego.
|
|
|
* @param home ścieżka do katalogu domowego
|
|
|
* @param file ścieżka do pliku
|
|
|
- * @return
|
|
|
+ * @return
|
|
|
* @throws PathConvertException jeśli pliki znajdują się na różnych dyskach
|
|
|
*/
|
|
|
public static String asRelative(FilePath home, FilePath file) throws PathConvertException {
|
|
|
@@ -156,7 +156,7 @@ public final class PathHelper {
|
|
|
* Zwraca względną ścieżkę do podanego pliku względem katalogu domowego.
|
|
|
* @param home ścieżka do katalogu domowego
|
|
|
* @param file ścieżka do pliku
|
|
|
- * @return
|
|
|
+ * @return
|
|
|
* @throws PathConvertException jeśli pliki znajdują się na różnych dyskach, lub ścieżka
|
|
|
* {@code home} nie wskazuje na katalog
|
|
|
*/
|
|
|
@@ -171,28 +171,28 @@ public final class PathHelper {
|
|
|
* Zwraca względną ścieżkę do podanego pliku względem katalogu domowego.
|
|
|
* @param home ścieżka do katalogu domowego
|
|
|
* @param file ścieżka do pliku
|
|
|
- * @return
|
|
|
+ * @return
|
|
|
* @throws PathConvertException jeśli pliki znajdują się na różnych dyskach, lub ścieżka
|
|
|
* {@code home} nie wskazuje na katalog
|
|
|
*/
|
|
|
public static String asRelative(String home, String file) throws PathConvertException {
|
|
|
- return asRelative(new File(home), new File(file));
|
|
|
+ return asRelative(asFile(home), asFile(file));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Zwraca względną ścieżkę do podanego pliku względem katalogu bieżącego aplikacji.
|
|
|
* @param file
|
|
|
- * @return
|
|
|
+ * @return
|
|
|
* @throws PathConvertException jeśli plik znajduje się na innym dysku, niż katalog bieżący
|
|
|
*/
|
|
|
public static String asRelative(String file) throws PathConvertException {
|
|
|
- return asRelative(new File("."), new File(file));
|
|
|
+ return asRelative(new File("."), asFile(file));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Zwraca względną ścieżkę do podanego pliku względem katalogu bieżącego aplikacji.
|
|
|
* @param file
|
|
|
- * @return
|
|
|
+ * @return
|
|
|
* @throws PathConvertException jeśli plik znajduje się na innym dysku, niż katalog bieżący
|
|
|
*/
|
|
|
public static String asRelative(File file) throws PathConvertException {
|
|
|
@@ -207,12 +207,12 @@ public final class PathHelper {
|
|
|
* @return
|
|
|
*/
|
|
|
public static String asAbsolute(String file) {
|
|
|
- return new File(file).getAbsolutePath();
|
|
|
+ return asFile(file).getAbsolutePath();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Zamienia podaną względną ścieżkę na absolutną. Strategia konwersji jest
|
|
|
- * zależna od systemu operacyjnego oraz wersji JDK. Aby poznać szczegóły
|
|
|
+ * zależna od systemu operacyjnego oraz wersji JDK. Aby poznać szczegóły
|
|
|
* zobacz opis funkcji {@link File#getAbsolutePath}.
|
|
|
* @param file
|
|
|
* @return
|
|
|
@@ -245,7 +245,7 @@ public final class PathHelper {
|
|
|
* @return
|
|
|
*/
|
|
|
public static String asNormalized(String path) {
|
|
|
- return asNormalized(new File(path)).getAbsolutePath();
|
|
|
+ return asNormalized(asFile(path)).getAbsolutePath();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -257,7 +257,7 @@ public final class PathHelper {
|
|
|
int index = path.lastIndexOf(".");
|
|
|
return (-1==index) ? "" : path.substring(index);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Sprawdza, czy ścieżka wskazuje na plik z podanym rozszerzeniem.
|
|
|
* @param path
|
|
|
@@ -270,7 +270,7 @@ public final class PathHelper {
|
|
|
|
|
|
/**
|
|
|
* Zwraca nową ścieżkę zmieniając rozszerzenie pliku, na który wskazywała
|
|
|
- * ścieżka podana jako argument. Funkcja <b>nie</b> wykonuje operacji na
|
|
|
+ * ścieżka podana jako argument. Funkcja <b>nie</b> wykonuje operacji na
|
|
|
* systemie plików - jak wszystkie funkcje z klasy {@code PathHelper}, metoda
|
|
|
* pracuje tylko i wyłącznie na nazwach.
|
|
|
* @param path
|
|
|
@@ -296,7 +296,7 @@ public final class PathHelper {
|
|
|
int index = name.lastIndexOf(".");
|
|
|
return index<0 ? name : name.substring(0, index);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Zwraca ścieżkę wskazującą na katalog zawierający podany plik/katalog.
|
|
|
* W razie potrzeby funkcja konwertuje ścieżkę do lokalizacji absolutnej
|
|
|
@@ -319,4 +319,12 @@ public final class PathHelper {
|
|
|
}
|
|
|
return new File(parent);
|
|
|
}
|
|
|
+
|
|
|
+ public static File asFile(String path) {
|
|
|
+ return new File(path.replace('/', File.separatorChar).replace('\\', File.separatorChar));
|
|
|
+ }
|
|
|
+
|
|
|
+ public static int compare(String path1, String path2) {
|
|
|
+ return asFile(path1).compareTo(asFile(path2));
|
|
|
+ }
|
|
|
}
|