Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Работа с файловой системой


Автор: zone51 19.1.2007, 15:33
Здравствуйте! Очень хочется узнать как в Java работать с локальной фс. То есть создавать, удалять каталоги и т д. Смотрел класс File но там нет функции смены каталога. Странно. Какое средство "самое то"? smile Спасибо.

Автор: JUncle 19.1.2007, 15:38
Смотри пакет java.io (где и твой File лежит).
Все там есть.

Автор: zone51 19.1.2007, 15:41
JUncle, 
Ну http://java.sun.com/j2se/1.4.2/docs/api/java/io/package-summary.html
ичто то не нашел там полноценного класса для работы с ФС. Все в основном на потоках и файлах  smile 

Автор: LSD 19.1.2007, 16:37
Создать каталог(и):
Код
File file = new File("C:/dir1/dir2/dir3");
System.out.println("file.mkdirs() = " + file.mkdirs());

Автор: powerOn 19.1.2007, 16:38
Цитата(zone51 @  19.1.2007,  15:33 Найти цитируемый пост)
Смотрел класс File но там нет функции смены каталога.

Что еще за функция смены каталога? Это как вообще выглядеть должно?

Автор: zone51 19.1.2007, 17:01
powerOn, 
Гм ну вот есть у вас диск. Как вы будете входить в каталоги?
вот запускаете cmd в винде и как без команды cd вы войдете в любую папку на диске?

Автор: LSD 19.1.2007, 17:31
Цитата(zone51 @  19.1.2007,  17:01 Найти цитируемый пост)
Гм ну вот есть у вас диск. Как вы будете входить в каталоги?
вот запускаете cmd в винде и как без команды cd вы войдете в любую папку на диске?

При чем тут это? Класс File описывает файл или каталог на диске, он не имеет никакого отношения к пользовательскому интерфейсу.

File.getParentFile() - получить родительский каталог (если есть)
File.listFiles() - получить спискок файлов и подкаталогов в данном каталоге (File должен представлять собой каталог)
File.listRoots() - получить список корней файловой системы (метод статический), для *nix он вернет /, для Windows вернет список дисков.
Этих методов достаточно, чтобы обойти все папки.

Автор: zone51 19.1.2007, 17:37
LSD, 
Млин ну все понятно ну как мне зайти в папку?
Цитата

File.listFiles()

Мне теперь надо в каждый подкаталог войти и проверить там содержимое . Как?

Автор: LSD 19.1.2007, 17:47
Цитата(zone51 @  19.1.2007,  17:37 Найти цитируемый пост)
Млин ну все понятно ну как мне зайти в папку?

Что вообще значит зайти в папку?!

Цитата(zone51 @  19.1.2007,  17:37 Найти цитируемый пост)
Мне теперь надо в каждый подкаталог войти и проверить там содержимое . Как?

File.listFiles() вернет тебе массив File каждый из которых описывает подкаталог или файл.

Автор: zone51 19.1.2007, 17:49
LSD, 
Цитата

Что вообще значит зайти в папку?!

Цитата

Цитата(zone51 @  19.1.2007,  17:01 )
Гм ну вот есть у вас диск. Как вы будете входить в каталоги?
вот запускаете cmd в винде и как без команды cd вы войдете в любую папку на диске?


Цитата

File.listFiles() вернет тебе массив File каждый из которых описывает подкаталог или файл.


О..А это уже лучше.  smile  smile Спасибо. Что то у меня ассоциации сбились. smile 

Автор: LSD 19.1.2007, 17:51
Что ты прицепился к этому CMD! CMD это командный процессор, он предназначен для взаимодействия с пользователем, и никакого отношения к API не имеет. Забудь про него, нету его.

Автор: zone51 19.1.2007, 17:58
LSD, 
Цитата

Что ты прицепился к этому CMD! CMD это командный процессор, он предназначен для взаимодействия с пользователем, и никакого отношения к API не имеет. Забудь про него, нету его.

Учтем (с) ДМБ  smile 

Ну я просто думал что и везде все по такому принципу. Чтоб шота с каталога взять в него надо войти для начала. smile 

Автор: LSD 19.1.2007, 18:08
Цитата(zone51 @  19.1.2007,  17:58 Найти цитируемый пост)
Чтоб шота с каталога взять в него надо войти для начала.

Нет. Есть некий путь, и можно про него что-то узанать: существует ли он, описывает он файл или каталог, какой у него родительский каталог, какие у него дочерние каталоги и т.д. И плюс есть возможность узнать какие есть "корни" в файловой системе.

Автор: zone51 19.1.2007, 18:12
LSD, 
Хорошо. Извините я тут еще тему создал ниже про клонирование дерева. Как тогда зеркально скопировать все содержимое какого то дерева каталогов с фтп на локальный диск. Я ктому что на локальном то по ходу надо будет создавать папки, через FIle ж там не вырулишь. Спасибо. smile  smile 

Автор: LSD 19.1.2007, 18:42
Именно через File и вырулишь. Чтобы создать подпапку у заднной папки делаешь так:
Код
File dir = new File(".");
File subDir = new File(dir, "new-dir-name");
if(subDir.createNewFile())
  System.out.println("created");

а вообще есть способы попроще, но об этом в другом топике.

Автор: zone51 19.1.2007, 18:58
LSD, 
powerOn, 
JUncle, 
Спасибо. Тема закрыта

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)