2009-06-28 14 views

Odpowiedz

26

Tylko ścieżka pliku jest przekazywana, wewnątrz program użyć klasy Java plików obsłużyć to

Trwa to pierwszy parametr jako ścieżka pliku:

import java.io.File; 

public class SomeProgram { 
    public static void main(String[] args) { 
     if(args.length > 0) { 
      File file = new File(args[0]); 

      // Work with your 'file' object here 
     } 
    } 
} 
+0

czy możesz mi powiedzieć coś więcej na temat "arg [0]" Nie mogę znaleźć użytecznego źródła do przeczytania tematu wiersza poleceń: ((((((( – Johanna

+0

Przeczytaj sekcję "główna metoda" na http://java.sun.com/docs/books/tutorial/getStarted/application/index.html .Dokładnie opisuje czym jest "argumenty" Samouczek jest dobrym źródłem do znalezienia odpowiedzi na wiele pytania, które miałeś –

+0

@Johanna: Args [0] uzyskuje dostęp do argumentów tablic łańcuchowych w pozycji 0 (pierwszy element tablicy), argumenty są przekazywane jako parametr do metody głównej (String [] args), oraz jest tablicą ciągów zawierającą argumenty wiersza poleceń przekazane do programu: – Sean

7

w Java, main metoda otrzymuje tablicę String jako argument, jak zapewne zauważyłeś. możesz podać inną nazwę parametrowi args, ale jest to najczęściej używana.

tablica args zawiera wartości tego, co użytkownik wpisał podczas uruchamiania programu, po nazwie klasy. Na przykład, aby uruchomić klasę o nazwie Foo, użytkownik musi wpisać:

[user @ stacjonarny ~] $ java Foo

wszystko użytkownik wpisze po nazwa klasy jest uważany za parametr . na przykład:

[user @ stacjonarny ~] $ java Foo bar baz

teraz program otrzymał dwa parametry: bar i baz. te parametry są przechowywane w tablicy args. jako zwykła tablica Javy, pierwszy parametr można uzyskać, uzyskując dostęp do args[0], drugi parametr można uzyskać, uzyskując dostęp do args[1] i tak dalej. jeśli spróbujesz uzyskać dostęp do nieprawidłowej pozycji (gdy użytkownik nie wpisał tego, czego oczekiwałeś), ta instrukcja wygeneruje wartość ArrayIndexOutOfBoundsException, podobnie jak w przypadku każdej tablicy. możesz sprawdzić, ile parametrów zostało wpisanych za pomocą args.length.

wróć do pytania. użytkownik może poinformować nazwę pliku jako parametr wiersza poleceń i można odczytać tę wartość za pomocą argumentu metody main, zwykle o nazwie args. musisz sprawdzić, czy naprawdę wpisał coś jako argument (sprawdzając długość tablicy), a jeśli jest w porządku, masz dostęp do args[0], aby przeczytać, co wpisał. następnie możesz utworzyć obiekt oparty na tym łańcuchu i zrobić to, co chcesz z nim zrobić. zawsze sprawdź, czy użytkownik wpisał liczbę oczekiwanych parametrów, inaczej uzyskasz wyjątek podczas dostępu do tablicy.

tutaj jest pełna przykładów, jak używać parametrów wiersza polecenia:

public class Foo { 
    public static void main(String[] args) { 
     if (args.length == 0) { 
      System.out.println("no arguments were given."); 
     } 
     else { 
      for (String a : args) { 
       System.out.println(a); 
      } 
     } 
    } 
} 

ta klasa będzie analizować parametry poinformowany przez użytkownika. jeśli nic nie napisze, klasa wypisze komunikat "nie podano żadnych argumentów". jeśli przekaże dowolną liczbę parametrów, parametry te zostaną wyświetlone na ekranie. tak, prowadzenie tej klasy z dwoma przykładami Mam podanymi na tej odpowiedzi, wyjście będzie:

[user @ stacjonarny ~] Foo $ java
żadne argumenty zostały podane.
[user @ stacjonarny ~] $ java Foo bar baz
bar
baz

2

Moim zdaniem, najlepszych praktyk, aby spróbować wykryć args == 0 i zwraca listę poleceń pomocy na temat korzystania program, jeśli nie podano żadnych argumentów.

+1

Witamy w StackOverflow! Myślę, że plakat chce wiedzieć, jak go rozwiązać, jeśli w rzeczywistości> 0>. –

0

Widziałem kilka innych rozwiązań, ale myślę, że nie zadziałają, jeśli ty. Na przykład podaj C:\Program Files\file.dat jako argument wiersza polecenia. Wtedy to nie zadziała, ponieważ bierzesz tylko args[0] podczas tworzenia nowego pliku.

Należy więc rzeczywiście coś zrobić jak poniżej, dołącz wszystkie części danego argumentu, a następnie dokonać plik z nim:

import java.io.File; 

public class SomeProgram { 
    public static void main(String[] args) { 
     String current = ""; 
     File lastFile = null; 
     for(String str : args){ 
      File newFile = new File((current + " " + str).trim()); 
      if(newFile.exists()){ 
       lastFile = newFile; 
      } 
     current += " " + str; 
     } 
     File yourFile = lastFile; 
    } 
} 

Ja obecnie pracuje nad podobnym problemem i wydaje się to zrobić sztuczka.

+0

To jest dobre rozwiązanie. Argumenty przekazywane do programu to ścieżka do pliku, która zawiera spacje. Jednak nie jest to dobre podejście, jeśli do programu jest przekazywana więcej niż ścieżka do pliku. Właściwe podejście polega na otaczaniu ścieżki pliku cudzysłowami przed wysłaniem go do programu. Program powinien następnie sprawdzić, czy każdy argument jest prawidłowego typu, a jeśli nie, wyświetlić prawidłowy przypadek użycia i wyjść. –

Powiązane problemy