Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868

Извлечение файлов и каталогов

13.12.2010, 03:02. Показов 2595. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объясните, каким образом происходит вычисление в цикле, что одно является каталогом а другое файлом.
Меня интересует цикл из этого кода, логика его работы.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2010, 03:02
Ответы с готовыми решениями:

Архивирование определённых файлов из разных каталогов с сохранением структуры этих каталогов
Здравствуйте. Суть задачи. Есть определенный каталог (C:\X), в котором в разных подкаталогах лежат различные файлы и папки (количество,...

Копирование файлов из разных каталогов в каталоги с именами, соответствующими номерам в именах файлов
Добрый день! Помогите решить проблему. Есть семь папок (cam_1, cam_2, cam_3 и.т.д) с фотографиями (cam_1_00052.JPG, cam_1_00053.JPG,...

Сохранение различных файлов в теле програмы (в создаваемой нами) и извлечение их(файлов) на локальный диск
Кароч тута такие дела: есть куча разных файликов которые пользователь проги недолжен видеть.При запуске моей проги, она(прога) всю ту туеву...

11
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
13.12.2010, 09:06
s[i] это всего лишь строка с именем файла в каталоге dir. В конструктор файла дается аргумент строка, в которой указывается путь к файлу или каталогу, если указать просто s[i], то получится, что указывается имя файла, а именно путь относительный, относительно расположения программы, и, конечно, же такого файла, скорее всего, не будет "рядом" с программой, т.к. он находится в корне c:\, но как объект он создастся и будет файлом, даже если какой либо из s[i] был каталогом в c:\. Если добавить System.out.println(f.exist()); в ответ получишь false, т.к. такого файла нет.
Но если к аргументу в начале прибавить строку dir, которая равна "c:\", то в конструктор уже подается абсолютный путь к файлу или каталогу от корня с:\, и уже смотрятся реально существующие в корне с: файлы и каталоги.

P.S. В java нет такого объекта как каталог, есть только файл, который может быть директорией (каталогом, папкой)
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
13.12.2010, 19:26  [ТС]
1)Скажите, зачем в цикле фор, создаётся каждый раз один и тот же объект f с тем же именем f?
2)Скажите, зачем нужно за каждой итерацией переадть каждый следубщий элемент массива конструктору файл?
Java
1
2
3
4
5
6
7
8
9
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");
    }
}
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
13.12.2010, 19:42
Как я понял данная программа выводит список файлов и каталогов корня диска С
Перед циклом создается массив s, в который загоняется весь список файлов и папок корня С.
В цикле по длине этого массива на каждой итерации создается объект типа File, которому передается путь к i-му файлу из списка, создается объект с одним именем, но разным содержанием, каждую итерацию - это все время другой файл для того, чтобы проверить каждый файл из списка на то, является он директорией или нет.
1
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
13.12.2010, 19:46  [ТС]
Хорошо, скажите, а зачем передавать за каждой итерацией констурктору File передавать каждый элемент массива?
Java
1
File f = new File(dir+s[i]);
0
52 / 52 / 10
Регистрация: 25.05.2010
Сообщений: 182
13.12.2010, 20:33
Цитата Сообщение от Syltan Посмотреть сообщение
Хорошо, скажите, а зачем передавать за каждой итерацией констурктору File передавать каждый элемент массива?
Java
1
File f = new File(dir+s[i]);
действительно зачем, если можно так
Java
1
File f = new File(t,s[i]);
благо, конструктор позволяет
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
13.12.2010, 21:35  [ТС]
Вы написали как можно по другому, но не ответили зачем нужно за каждой итерацией
цикла конструктору передавать каждый элемент массива?
0
52 / 52 / 10
Регистрация: 25.05.2010
Сообщений: 182
13.12.2010, 21:54
Syltan, программа перебирает всё файлы внутри заданного каталога(File t) а классифицирует их по системе каталог\обычный файл

Встречный вопрос - у вас есть абсолютный путь к директории и имя файла в этой директории, как получить абсолютный путь файла ?
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
13.12.2010, 22:09  [ТС]
Встречный вопрос - у вас есть абсолютный путь к директории и имя файла в этой директории, как получить абсолютный путь файла ?
Абсолютный чтоб найти нужно указывать с корня диска.

И вы всё равно не ответили зачем конструктору передача происходит в цикле?
Вот это:
Code
1
File f = new File(dir+s[i]);
0
52 / 52 / 10
Регистрация: 25.05.2010
Сообщений: 182
13.12.2010, 23:16
Цитата Сообщение от Syltan Посмотреть сообщение
Абсолютный чтоб найти нужно указывать с корня диска.
наводящий вопрос, у нас есть 2 объекта типа String, в одном храниться абсолютный путь до папки, во втором имя файла, как получить абсолютный путь к файлу ? могу привести пример
S1 = "C:\\" , S2="test.txt"
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
13.12.2010, 23:46  [ТС]
Абсолютный путь всегда из корня считается.обратится к корневой директории, а потом по каталогам ниже спускаться
например C:\Windows будет передано конструктору. Вопрос в том,зачем это делать за каждой итерацией отправлять в конструктор?

Объясните зачем это нужно конструктору, я вот это не могу понять.
Java
1
File f = new File(dir+s[i]);
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
14.12.2010, 12:20
По шагам:
1) Берется список файлов и папок корня диска С и загоняется в виде строк в массив:
Java
1
String s[] = t.list();
2)Идет цикл по длине этого массива
3)На каждой итерации берется i-й файл:
Java
1
File f = new File(dir+s[i]);
Например "С:/"+"Windows"="C:\Windows"
4)Проверяется, является ли этот файл папкой:
Java
1
if(f.isDirectory()){
5)В зависимости от условия, выводится то или иное сообщение

Объясните зачем это нужно конструктору, я вот это не могу понять.
Один из конструкторов класса File может принимать в параметре строку, в которой должен быть указан путь к файлу, при этом существование физического файла не обязательно. Массив имен файлов и папок корня С больше 1, там ведь больше одного файла, их все нужно проверить на предмет является ли они директориями или нет, поэтому сделан цикл, в каждой итерации проверяется по одному файлу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2010, 12:20
Помогаю со студенческими работами здесь

Удаление файлов из каталогов
Помогите написать программу, которая позволяет удалять из каталога =(( Вот надо сначало создать директорию, а потом удалить...

Сортировка каталогов и файлов
Нужно создать программу выполняющую сортировку каталогов и файлов различными методами (напр.: по типу, дате создания, имени, расширению и...

Поиск файлов и каталогов
Здравствуйте, нужна ваша помощь. Задали написать программу, которая ищет файли і папки в определенном месте, и выводит в алфавитном...

Копирование файлов и каталогов
у МЕНЯ ТАКОЙ ВОПРОС а Можно ли Копирование файлы и каталоги написанной прогой на Ассемблере! Какими функциями выполняется копирование? ...

Чтение каталогов и файлов
Здравствуйте! Ув. форумчане, тыкните носом пожалуйста где ошибка у меня? вроде все правильно а данные не отправляются: ajax.js ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru