Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 19:34   #1
Kasper1
Форумчанин
 
Аватар для Kasper1
 
Регистрация: 13.12.2010
Сообщений: 220
По умолчанию Извлечение файлов и каталогов

1)Скажите, зачем в цикле фор, создаётся каждый раз один и тот же объект f с тем же именем f?
2)Зачем нужно за каждой итерацией передавать каждый следующий элемент массива конструктору файл?
Код:
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]);
    if(f.isDirectory()){
    System.out.println(s[i]+" является каталогом\n");
    }else
    {
        System.out.println(s[i]+" является файлом\n");
    }
}

}
}

Последний раз редактировалось Kasper1; 13.12.2010 в 19:38.
Kasper1 вне форума Ответить с цитированием
Старый 13.12.2010, 21:57   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Kasper1 Посмотреть сообщение
1)Скажите, зачем в цикле фор, создаётся каждый раз один и тот же объект f с тем же именем f?
2)Зачем нужно за каждой итерацией передавать каждый следующий элемент массива конструктору файл?
Код:
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]);
    if(f.isDirectory()){
    System.out.println(s[i]+" является каталогом\n");
    }else
    {
        System.out.println(s[i]+" является файлом\n");
    }
}

}
}
А ты понял , что именно твоя программа делает ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 13.12.2010, 22:12   #3
Kasper1
Форумчанин
 
Аватар для Kasper1
 
Регистрация: 13.12.2010
Сообщений: 220
По умолчанию

Моя программа выводит список каталогов и файлов из диска С.
Ответьте пож. на вопросы в посте.
Kasper1 вне форума Ответить с цитированием
Старый 13.12.2010, 22:26   #4
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Ты можешь заменить свой код вот на такой , но все равно будет создаваться новый объект .

Код:

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

}
}
1)Скажите, зачем в цикле фор, создаётся каждый раз один и тот же объект f с тем же именем f?

Для того , что бы тебе не пришлось создавать столько объектов , сколько у тебя есть файлов + каталогов в директории С:\ , поэтому просто когда обработка одного объекта закончена , то он тебе уже не нужен , так ему можно присвоить другой объект из списка .

2)Зачем нужно за каждой итерацией передавать каждый следующий элемент массива конструктору файл?

С помощью вот этого метода t.list(); , ты получил список все файлов и каталогов в директории С:\ . Тебе нужно пройти по всем и написать , каталог это или файл .


Мой тебе совет , если ты хочешь лучше понять это , то тебе надо начать читать литературу по Java программированию .
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 13.12.2010, 23:33   #5
Kasper1
Форумчанин
 
Аватар для Kasper1
 
Регистрация: 13.12.2010
Сообщений: 220
По умолчанию

Вроде всё ясно в этом коде, не ясно одно.
Зачем каждый раз пока будут возвращать имена файлов в массиве,конструктору передавать путь к файлу,
например одна из них будет C:\Windows
в этом месте
Код:
File f = new File(dir+s[i]);
Kasper1 вне форума Ответить с цитированием
Старый 14.12.2010, 00:31   #6
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Иначе он будет искать имя файла/папки в той папке , где у тебя код программы (которую ты запускаешь) .
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор файлов и каталогов Fedor666 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.10.2013 15:04
Выбор файлов и каталогов Fedor666 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.02.2010 17:11
удаление файлов/каталогов revan-8 Общие вопросы C/C++ 7 24.07.2009 23:15
Копирование файлов и каталогов перетаскиваением между двумя окнами SANTA_KLAUD Общие вопросы Delphi 3 28.05.2008 21:52
Создание удаление каталогов, копирование файлов. Alar Общие вопросы Delphi 1 18.12.2007 18:30