Witam
Muszę poprawić fragment kodu w moim programie dlatego zrobiłem testową klasę do sprawdzenia tego fragmentu. Program prosi użytkownika o podanie ścieżki do katalogu następnie sprawdza czy dany katalog istnieje czy można do niego zapisać oraz czy nie jest plikiem. Problem pojawia się kiedy jako ścieżkę podamy np. CDROM program wywala wyjątek, a powinien wykryć, że nie można tam zapisywać i poprosić nas o podanie nowej ściezki. W jaki sposób można sprawdzić czy podana ścieżka nie jest CDROMem, albo jak rozwiązać ten problem?
Oto co już napisałem:
import java.io.File;
import java.util.Scanner;
public class Testowa {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
String directory;
System.out.println("Podaj katalog");
directory = scanner.next();
boolean ok = true;
do {
char[] c = directory.toCharArray();
if ((!"\\".equals(String.valueOf(c[c.length - 1]))) && (!"//".equals(String.valueOf(c[c.length - 1])))) {
directory += "\\";
}
File file = new File(directory);
if (file.exists()) {
if (file.isFile()) {
System.out.println("Podao ścieżkę do pliku a nie katalogu, proszę podać nową scieżkę:");
directory = scanner.nextLine();
file = new File(directory);
ok = false;
} else { //kiedy jets katalogiem
if (file.canWrite()) {
ok = true;
System.out.println("Zaakceptowano katalog");
} else {
System.out.println("W podanym katalogu nie można zapisywać");
System.out.println("Podaj inną ścieżkę:");
directory = scanner.nextLine();
ok = false;
}
}
} else { //jesli plik nie istnieje
System.out.println("Podany katalog nie istnieje");
System.out.println("Próbuje stworzyć dany katalog.");
ok = file.mkdir();
if (ok) {
System.out.println("Udało się stworzyć katalog.:");
} else {
System.out.println("Nie udalo się stworzyć katalogu podaj inną ścieżkę:");
directory = scanner.nextLine();
}
}
} while (!ok);
}
}