Eksplorator plików - kilka pytań

0

Witam.
Zacząłem pisać swój eksploatator plików, a właściwie coś bardziej przypominającego terminal, czyli możemy wchodzić do folderów, tworzyć/usuwać pliki czy sprawdzać właściwości.. Obecnie znajduje się w bardzo, bardzo początkowym etapie, ale do rzeczy.

Mam 2 pytania odnośnie tego :

  1. Chciał uodpornić program na głupoty wpisywane przez użytkownika i chciałbym zapobiec sytuacji, gdy użytkownik wpisze mi : " [spacja\e] jakieś słowo".
String[] userSentence = in.nextLine().split(" +");

W ten sposób zapobiegam niepotrzebny spacją pomiędzy komendami czy argumentami. ( już dla własnej wygody), jedak nie mam pojęcia jak zapobiec sytuacji, gdy są one (spacje) przed pierwszym słowem.

  1. Listę obsługiwanych komend przechowuję tak :
List<String> commands = Arrays.asList("cd", "properties", "exit");

Każda komenda ma pewną funkcjonalność i tu jest moje pytanie jak je obsłużyć.
Czy robienie tego na podstawie numeru indeksu w Liście i odpowiedniego switch/if ( czyli cd ma indeks 0, więc w ifie byłoby np. Enter(typedPath) ma sens ?

Oczywiście jestem otwarty na różne sugestie odnośnie jak to zrealizować ( mam na myśli inny sposób niż ten tu przeze mnie wypisany ).

Pozdrawiam.

0
  1. spacje przed komendą bym po prostu czyścił - podobnie rozwiązane jest wszędzie
  2. do obsługi komendy najlepiej użyć użyć wzorca projektowego Command :P
0
  1. https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()
  2. W prostej wersji możesz to i na Switchu zrobić (od Javy 7 można również bezpośrednio na Stringach), natomiast w przyszłości możesz, tak jak kolega wyżej wspomniał, użyć wzorców.
0

Wymyśl sobie jakiś standard komend, np:
program -komenda -opcja1 -opcja2:wartosc ... {ogon}
"program" to program który odpalasz
"-komenda" to funkcja którą odpalasz w tym programie (wymagana lub opcjonalna, z minusem lub nie)
"-opcjaX" to opcja / opcje które są... opcjonalne
"ogon" to lista wartości separowanych spacją gdzie mogą być wartości w cudzysłowie, np.

10 "c:\Program Files\My Big Company\MyApp\test.exe" licencja
  • najpierw rozparsowujesz te komendy wg powyższego schematu
  • potem szukasz komendy która je obsłuży
  • jeśli nie znajdziesz to błąd - nieznana komenda
  • komenda może zwrócić błąd składniowy - np. wyjątek "dla opcji X wymagane są 3 parametry" (w "ogonie")
  • komenda może zwrócić błąd wykonania - np. wyjątek Exception
0

Mam pytanie odnośnie ścieżki pliku ( WIndows ).
Chodzi o to by program radził sobie ze ścieżką względną i bezwzględną.
Bo program tworzę w ten sposób :

File file = new FIle (path);

Użytkownikowi wyświetlają się foldery i może wpisać np. tylko nazwę folderu lub ścieżkę bezwzględną.
Z tą drugą nie ma problemu, jednak jedyne rozwiązanie jakie mi przychodzi ze ścieżką względną to :

FIle tmp = file;
file = new File(tmp.getAbsolutePath() +" \\wklepana nazwa folderu");

Domyślam się, że rozwiązanie dość amatorskie, jednak na lepsze nie wpadłem ( jedynie kombinowanie z "Path"), dlatego piszę do Was.
Prosiłbym o sugestie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1