Файловый объект с пробелом в имени каталога - PullRequest
1 голос
/ 15 декабря 2011

Я пытаюсь перечислить количество файлов в каталоге. Но я не могу этого сделать и подозреваю, что это связано с пробелами в именах родительских каталогов.
То, что я делаю, находится в файле .properties, я устанавливаю значение как -

dir.loc=H:/Main/dir one/dir - two/dir3/dir four  
dir.name=Run

Теперь в jave-файле я устанавливаю эти значения в строковые переменные как -

String s1 = properties.getProperty("dir.loc");
String s2 = properties.getProperty("dir.name");

Я создаю объект File как -

File f = new File(s1, s2);
File[] fList = f.listFiles();  

Теперь здесь fList есть null;
Диск H находится на другом удаленном компьютере, и я считаю, что java-программа пытается найти каталог «Run» локально, а не на диске H, и, поскольку он не находит «Run», список возвращает null.

Когда я попробовал в простом Java-классе как -

File f = new File("H:/Main/dir one/dir - two/dir3/dir four", "Run");  

тогда я получаю результат с f.listFiles().length;

Так что я думаю, что это может быть связано с извлечением значения из файла свойств и присвоением его переменной String.

Я прав в своем предположении?
Что может быть возможным решением этой проблемы?

Ответы [ 3 ]

2 голосов
/ 15 декабря 2011

Да, вы правы.Значения испорчены при чтении их из файла свойств.Сделайте это вместо:

dir.loc="H:/Main/dir one/dir - two/dir3/dir four" 
1 голос
/ 15 декабря 2011

Хорошо, я нашел решение для моей проблемы, на самом деле довольно просто.
Я сделал следующее -

В файле свойств -

dir.loc=H:/Main/dir one/dir - two/dir3/dir four/Run

В конфигурационном java-файле -

String s1 = properties.getProperty("dir.loc");

В моей Java-программе -

File tempF = new File(s1);
File dirLoc = new File(tempF.getAbsolutePath());

dirLoc.listFiles().length; выдает номер.

Комментарий @barti_ddu о getAbsolutePath () заставил меня задуматься о том, возможно, использовать это. Что-то не так с этим решением или не совсем приличное?

Спасибо всем.

0 голосов
/ 15 декабря 2011

Похоже, вам просто нужно обрезать значение ваших свойств. В коде, который вы показали,

  dir.loc=H:/Main/dir one/dir - two/dir3/dir four   

имеет пробелы.

Имеет ли это:

String s1 = properties.getProperty("dir.loc").trim();
String s2 = properties.getProperty("dir.name").trim();

это исправить?

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