LINUX.ORG.RU

Java работа с файлами


0

0

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


Ответ на: комментарий от Legioner

>> Ну файлики там скопировать-переместить-удалить.

> http://java.sun.com/javase/6/docs/api/java/io/File.html

Удалить можно, переместить с горем пополам (в пределах одной файловой системы) тоже.
А скопировать? Никак? Только прочитать поток байт и записать в новый файл??

shlag
() автор топика
Ответ на: комментарий от shlag

FileChannel ic = new FileInputStream("source.txt").getChannel();
FileChannel oc = new FileOutputStream("target.txt").getChannel();
ic.transferTo(0, ic.size(), oc);
ic.close();
oc.close();

А в чём проблема?

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

> А в чём проблема?

Да нет, проблемы нет, просто я никогда не писал на Java и подобный метод показался мне странным.
Т.е. это стандартный метод копирования файлов? Я как-то видел тут - на лоре - топик, в котором обсуждали файловый менеджер на Java. Получается, что и целые каталоги он копирует рекурсивным применением этого метода и созданием подкаталогов?

shlag
() автор топика
Ответ на: комментарий от shlag

мне тоже странно... зачем трасферить? почему не примитив ОС аля файл.цп("сюда")? это вечная беда явы: все делается в общем случае и примитивные задачи становятся сложными :/

Pi ★★★★★
()
Ответ на: комментарий от Pi

Это совсем не беда. Общность дает свои немалые приемущества. Когда долго программируешь на яве. Если понять яву и привыкнуть к ней, то некоторые вещи можно делать и без документации. Они просто становятся интуитивно понятными. Плюс, конечно, хорошая IDE с автокомплитом.

Ian ★★
()
Ответ на: комментарий от Ian

это огромная беда! ява разучивает решать проблемы здесь и сейчас. мне нужно скопировать файл. почему я должен таскать байты, а не ось? почему питон может, а жабе мешает общность? более того, в том же питоне файл можно скопировать как раз-таки без документации.

и об интуитивности... почему для того, чтоб свинговая таблца выходила из режима редактирования при потере фокуса, я должен ей сказать

putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

никакой автокомплит не поможет, этот воркэраунд тянется с 1.4

Pi ★★★★★
()
Ответ на: комментарий от Pi

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

А как ось будет копировать файлы? Я чего то упустил, уже появился такой системный вызов?

Претензии конечно логичные и правильные, но, по сути, подобный метод пишется один раз в каких-нибудь Utils-ах и проблема забывается. Главное — чтобы все знали про этот метод :)

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

конечно же, формально, ось не копирует:) и конечно же, подобный метод уйдет в утилсы. но в том же питоне оно есть сразу.

ЗЫ я не фанат питона, и большая част мною написанного кода - жабная

Pi ★★★★★
()
Ответ на: комментарий от Pi

Тут с вами нельзя не согласится. Некоторые вещи в Java сделаны не то что бы совсем очевидно, но согласитесь, Java, как язык, достаточно стройна. Возможно есть неочевидности. Но где их нет?

Я не защищаю ни Sun, ни Java, но мне кажется, что вы черезчур категоричны.

Ian ★★
()

Да и вообще Commons IO (по проверенным слухам, гугл давно забанил http://commons.apache.org по причине крайнего неприличия).

svr69 ★★
()
Ответ на: комментарий от Pi

Приличные жаваписцы уже давно расценивают апачевские коммонз как часть стандартного api. И там это все есть.

svu ★★★★★
()
Ответ на: комментарий от svu

да, да. и каждая вебаппликуха в варе/еаре тащит с собой по 50 джаров апачевского происхождения

Pi ★★★★★
()
Ответ на: комментарий от Pi

Или по сотне собственных велосипедов, несомненно столь же надежно протестированных, как и джары апачевского происхождения.

svr69 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.