Почему мы должны добавлять косую черту в каталог файлов, чтобы различать каталог и файлы? - PullRequest
0 голосов
/ 03 января 2019

Внутри for петли:

Почему я должен добавить косую черту после имени каталога? Например:

for(int i = 0; i<s.length; i++){
    File f = new File(dirname + "/" + s[i] ); 
    // Why to add "/" after dirname(i.e directory name)
    if(f.isDirectory()){
        System.out.println(s[i] + " is Directory" );
    }else{
        System.out.println(s[i] + " is File");
    }
}

Если я удаляю обратную косую черту "/" после dirname:

File f = new File(dirname + "/" + s[i] ); 

Когда я удаляю "/":

File f = new File(dirname + s[i] ); 

Он не различает каталог и файл. Все файлы внутри будут считаться файлом. После того, как я добавлю обратную косую черту, все будет хорошо. И это будет различать каталог и файл. Это почему? Почему я должен добавить "/". Программа предназначена для просмотра внутри файла без добавления "/".

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Символ косой черты - это разделитель файлов . Это используется для отделения каталогов от файлов.

Если вы строите свою строку, имя файла будет:

Pictures/my-dog.png

Здесь вы увидите, что есть каталог с именем «Picture» и именем файла «my-dog.png».

Если вы удалите косую черту, она будет выглядеть как длинное имя файла:

Picturesmy-dog.png
0 голосов
/ 03 января 2019

Включение и пропуск / означает, что файл указывает на другой путь.Например, "foo/bar" и "foobar" - это разные пути, которые указывают на разные объекты в файловой системе:

Parent directory
+-- foobar     "foobar"
+-- foo
    +-- bar    "foo/bar"

Не быть каталогом - это не то же самое, что файл.Итак, скорее всего (мы не знаем, что находится в вашей файловой системе), это не каталог, потому что он не существует.

Сначала вы должны проверить if (!f.exists()) (или аналогичный):

if (!f.exists()) System.out.println("Doesn't exist");
else if (f.isDirectory()) ... etc

Также обратите внимание, что вы не должны добавлять / в любом случае - используйте конструктор с двумя аргументами:

File f = new File(dirname, s[i] ); 
...