Получить текущий путь к файлу Java, который работает - PullRequest
6 голосов
/ 05 февраля 2012

Я пытаюсь написать простое приложение клиент / сервер tcp, которое копирует файл. Я хочу, чтобы на сервере был список файлов, которые клиент может скопировать. Пока мой код такой:

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());  
        }
    }
}

Выход:

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

Моя проблема в том, что он предоставляет мне родительский каталог вместо текущего. Мой GetFileList.java находится в C:\Users\XXXXX\Documents\NetBeansProjects\Test\src, но показывает C:\Users\Alick\Documents\NetBeansProjects\Test Может кто-нибудь помочь мне исправить это?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

Код работает правильно. Это не дает вам местоположение вашего исходного файла. Это дает вам текущий каталог, где работает ваша программа.

Я считаю, что вы запускаете программу из IDE, поэтому текущий каталог в этом случае является корневым каталогом вашего проекта.

Вы можете перечислить каталог src вашего проекта, вызвав new File("src").listFiles(), но я не думаю, что вам действительно нужно это: когда вы компилируете и упаковываете свою программу, исходный и исходный каталог в любом случае недоступны.

Я думаю, что если вы хотите показать пользователю какую-то структуру каталогов, ваша программа должна получить корневой каталог в качестве параметра. Например, вы должны запустить вашу программу как

java -cp YOUR-CLASSPATH MyClass c:/root

Итак, все файлы в c:\root будут доступны.

0 голосов
/ 05 февраля 2012

Вместо файла file = new File (".");Используйте абсолютный путь.Вы не можете зависеть от пользователя, запускающего программу из определенного каталога.

Если вы хотите, чтобы Netbeans запускал вашу программу из определенного каталога, вы можете указать каталог как рабочий каталог в Свойства проекта -> Выполнить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...