2012-02-05 16 views
5

Próbuję napisać prostą aplikację klient/serwer tcp, która kopiuje plik. Chcę, aby serwer wyświetlił listę plików, które klient może skopiować. Mój kod do tej pory to:Pobierz bieżącą ścieżkę do pliku java, który działa

import java.io.*; 
public class GetFileList 
{ 
    public static void main(String args[]) throws IOException{ 
     File file = new File("."); 
     File[] files = file.listFiles(); 
     System.out.println("Current dir : " + file.getCanonicalPath()); 
     for (int fileInList = 0; fileInList < files.length; fileInList++) 
     { 
      System.out.println(files[fileInList].toString()); 
     } 
    } 
} 

wyjściowa:

Current dir : C:\Users\XXXXX\Documents\NetBeansProjects\Test 
.\build 
.\build.xml 
.\manifest.mf 
.\nbproject 
.\src 
.\UsersXXXXXDocumentsNetBeansProjectsTestsrcfile2.txt 

moim problemem jest to, że daje mi katalogu nadrzędnego zamiast bieżącego katalogu. My GetFileList.java znajduje się w C:\Users\XXXXX\Documents\NetBeansProjects\Test\src, ale pokazuje C:\Users\Alick\Documents\NetBeansProjects\Test Czy ktoś może mi pomóc to naprawić?

+0

Dlaczego na ziemi nie końcowy użytkownik chce przesłać pliki, które są w zgłoszeniu własnego informator?!? Zaoferuj im 'JFileChooser''a (który domyślnie jest' user.home') i pozwól im go pobrać. BTW - proszę nie bądź tak skąpy z wcięciami kodu i używaj logicznego i spójnego systemu. –

Odpowiedz

3

Kod działa poprawnie. Nie daje lokalizacji pliku źródłowego. Daje ci bieżący katalog, w którym działa twój program.

Uważam, że korzystasz z programu z IDE, więc katalog bieżący w tym przypadku jest katalogiem głównym twojego projektu.

Możesz wyświetlić katalog src projektu, dzwoniąc pod numer new File("src").listFiles(), ale nie sądzę, że naprawdę tego potrzebujesz: podczas kompilowania i pakowania programu katalog źródłowy i źródłowy nie są dostępne.

Myślę, że jeśli chcesz mieć możliwość wyświetlania struktury katalogów dla swojego użytkownika, twój program powinien pobrać katalog główny jako parametr. Na przykład należy uruchomić program jako

java -cp YOUR-CLASSPATH MyClass c:/root

Tak, wszystkie pliki poniżej c:\root będzie dostępna.

+0

O Widzę problem. Uruchomiłem go na cmd i jest poprawne. Dziękuję za wyjaśnienie! – Dan

0

Zamiast Plik file = new File ("."); Użyj bezwzględnej ścieżki. Nie można polegać na programie uruchamiającym użytkownika z określonego katalogu.

Jeśli chcesz Netbeans, aby uruchomić program z określonego katalogu można określić katalog jako katalog pracę w Project Properties -> Uruchom

Powiązane problemy