Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Извлечение файлов и каталогов 
:(
    Опции темы
Golovastik
Дата 13.12.2010, 03:03 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 19.7.2009

Репутация: 1
Всего: 0



Объясните, каким образом происходит вычисление в цикле, что одно является каталогом а другое файлом.
Меня интересует цикл из этого кода, логика его работы.
Код

package javaapplication3;
import java.io.*;

public class Main{
public static void main (String []  args)  {
String dir = "c:\\";
File t = new File(dir);
if(t.isDirectory()){
    System.out.println("Каталог "+dir);
}
String s[] = t.list();
for(int i=0; i<s.length;i++){
    File f = new File(dir+s[i]); //что именно попадает в конструктор, почему если написать просто
  //s[i] в результате напишет что всё является файлом
    if(f.isDirectory()){
    System.out.println(s[i]+" является каталогом\n");
    }else
    {
        System.out.println(s[i]+" является файлом\n");
    }
}

}
}




2)
PM MAIL   Вверх
Temdegon
Дата 13.12.2010, 06:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



System.out.println(dir + s[i]) дописать, что бы ответить самостоятельно на вопрос
Цитата

что именно попадает в конструктор, почему если написать просто....

вам религия не позволяет?
Попадает c:\Windows к примеру, т.е. ваш начальный каталог + имя файла.

Цитата

почему если написать просто s[i] в результате напишет что всё является файлом

Если вместо "c:\Windows" передать в конструктор File просто "Windows", то это уже будет не абсолютный путь, а относительный. И файл будет искаться не в C:\, а в текущем каталоге, т.е. в папке вашего проекта. И его там естественно нету. А т.к. файл не существует, то isDirectory() вернет false. вы можете это легко проверить методом f.exists();

А вообще, нет смысла сначала получать список имен файлов, а потом из них клепать обьекты File. Можно сразу получить массив File[]

Код

        File files[] = t.listFiles();
        for (File f : files) {
            if (f.isDirectory()) {
                System.out.println(f + " является каталогом\n");
            } else {
                System.out.println(f + " является файлом\n");
            }
        }

PM MAIL   Вверх
Golovastik
Дата 13.12.2010, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 19.7.2009

Репутация: 1
Всего: 0



1)Скажите, зачем в цикле фор, создаётся каждый раз один и тот же объект f с тем же именем f?
2)Скажите, зачем нужно за каждой итерацией переадть каждый следубщий элемент массива конструктору файл?
Код

for(int i=0; i<s.length;i++){
    File f = new File(dir+s[i]);
    if(f.isDirectory()){
    System.out.println(s[i]+" является каталогом\n");
    }else
    {
        System.out.println(s[i]+" является файлом\n");
    }
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0962 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.