File.listFiles() возвращает null на подключенном сетевом диске

Eclipse Luna не видит подключенные сетевые диски! Очевидно, я могу прочитать любой файл на подключенном диске.

Вот мой тест:

public static void main(String[] args) throws       
    // this part works properly
    File myFile = new File("C:\\test.txt");
    FileWriter fw = new FileWriter(myFile);
    fw.write("test");
    fw.close();

    //this will throw an exception
    myFile = new File("O:\\");
    File[] myList = myFile.listFiles();
    System.out.println(myList.length);
}

работая как Java-приложение, я получил:

Exception in thread "main" java.lang.NullPointerException
at variousTest.fileFinder.main(fileFinder.java:28)

Я могу подтвердить вам, что на диске есть большой список папок.

Операционная система: Windows 7 Профессиональная с пакетом обновления 1 (SP1).

ОБНОВЛЕНИЕ I — 10 сентября:

я попытался запустить программу вне eclipse, и я сбит с толку результатом, на самом деле я получил это исключение:

Exception in thread "main" java.lang.FileNotFoundException: C:\test.txt (Access Denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileWriter.<init>(Unknown Source)
at fileFinder.main(fileFinder.java:14)

ОБНОВЛЕНИЕ II – 10 сентября:

вышеуказанное исключение (обновление I) было поднято из-за прав. Программа работает правильно, используя каталог C:\Users\username\Desktop


person Koop4    schedule 09.09.2014    source источник
comment
Запустите его из командной строки, сначала попробовав O: и dir. Это должно позаботиться об авторизации для пользователя Windows. Тогда listFiles больше не должен возвращать значение null. (Нет решения, но посмотреть, поможет ли это.)   -  person Joop Eggen    schedule 09.09.2014
comment
@ greg-449 Строка 28 — это SystemOut.   -  person Koop4    schedule 10.09.2014
comment
@JoopEggen dir O: вернуть полный список папок внутри диска O: в командной строке   -  person Koop4    schedule 10.09.2014


Ответы (1)


Windows обычно требует прав администратора для доступа к корню C:. Можете ли вы попробовать записать в папку на рабочем столе? Тогда путь будет C:\Users\<user>\Desktop\test.txt.

person Stefan    schedule 10.09.2014
comment
Это работает. Спасибо. Любое предложение по основной проблеме? - person Koop4; 10.09.2014
comment
У вас есть `O:` в проводнике Windows? Можете ли вы получить к нему доступ из проводника Windows и видите ли вы файлы, которые ожидаете увидеть? - person Stefan; 10.09.2014
comment
Да, он отображается как O:, и я вижу его в проводнике в разделе сетевого пути. Как написано выше, я могу либо дважды щелкнуть, чтобы увидеть файл, либо использовать команду dir O: в приглашении, чтобы увидеть список файлов. - person Koop4; 10.09.2014
comment
Можете ли вы попробовать myFile = new File("\\\\server\\path\\to\\share");, чтобы узнать, можете ли вы получить к нему доступ таким образом? Из Javadoc: Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs. - person Stefan; 10.09.2014
comment
используя полное имя, это работает, но проект должен быть развернут на самом сервере, и я не могу изменить эту строку. Мой старый ноутбук (я сменил его на прошлой неделе) мог читать с сервера, используя это обозначение. - person Koop4; 10.09.2014
comment
Изменилось ли что-нибудь в конфигурации доли? Возможно, вы использовали другие учетные данные при подключении сетевого диска? Кроме того, у пользователя, выполняющего код, подключен этот сетевой диск? - person Stefan; 10.09.2014
comment
Меняется сам Домен, а также моя предыдущая версия IDE была Kepler. Да, у меня подключен сетевой диск, и я могу получить к ним доступ, дважды щелкнув диск, показанный в окне проводника компьютера. - person Koop4; 10.09.2014
comment
В этом случае я бы связался с вашим администратором домена и посмотрел, может ли он/она сделать эту общую папку доступной для всех (учетные данные не требуются). Вы также можете снова попробовать Kepler и посмотреть, сработает ли это (я сомневаюсь в этом, но попробовать стоит). - person Stefan; 10.09.2014