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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование папок, не получается с вложенными папками 
:(
    Опции темы
mmfStudent
Дата 8.7.2009, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго всем времени суток. Такой вопрос (наверника уже кто-нибкдь сталкивался).  Написал функцию копирования файлов, если копирую папку и в ней только файлы то при ответе пользователя на вопрос "Заменить?" (да; да, для всех; итд) cуществующие файлы заменияются (или нет, как ответил пользователь) и все вроди хорошо. Но если есть папки то уменя рекурсивно вызывается эта же функция и при существовнаии файлов с таким же именев вопрос "Заменить?" задается для каждой вложенной папки. Как этого избежать. Я предпологаю, что придется избовляться от рекурсии, но тогда код станет более громоздкий и хотелось бы выслушать ваше мнение. 

З.Ы. думаю я объяснил работу функции и код не нужен, если же вы захотите посмотреть код то я выложу.
PM MAIL   Вверх
math64
Дата 8.7.2009, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 5
Всего: 72



Код

public interface FileCopier {
public static final int NO_ANSWER = 1;
public static final int CANCEL = 2;
public static final int YES = 3;
public static final int NO = 4;
public static final int YES_FOR_ALL = 5;
public static final int NO_FOR_ALL = 6;
public void copyFiles(File src, File dst, int answer);
};

PM   Вверх
mmfStudent
Дата 8.7.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, я тоже об этом думал - но все функции у меня статичские и сл-но нескоьлко процессов копирования будут работать не коректно. Ну видимо статическими и боьлше не быть smile. И еще такой вопрос, копирование блочное, какой размер буфера лучше использовать?
PM MAIL   Вверх
math64
Дата 9.7.2009, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 5
Всего: 72



Можно и со статическими функциями - если не выделять интерфейс или использовать класс только со статическими функциями:
Код

public class FileCopier {
  public static final int NO_ANSWER = 1;
  public static final int CANCEL = 2;
  public static final int YES = 3;
  public static final int NO = 4;
  public static final int YES_FOR_ALL = 5;
  public static final int NO_FOR_ALL = 6;

  public static void copyFiles(File src, File dst) {
    copyFiles(src, dst, NO_ANSWER);
  }

  public static void copyFiles(File src, File dst, int answer) {
     ...
     if (answer == NO_ANSWER) {
       answer = getAnswer(srcFile, dstFile);
     }
     ...
     copyFiles(srcDir, dstDir, answer);
  }

  public static void getAnswer(File src, File dst) {
     // Вызываем диалог
  }
}


Добавлено через 7 минут и 24 секунды
Если первый заменяемый файл будет находиться в подкаталоге, то вопрос тоже будет задаваться повторно.
Поэтому либо copyFiles() должен возвращать answer, либо answer должен находиться в (static) поле класса, тогда нужен метод setAnswer(), перед копированием вызывется setAnswer(NO_ANSWER), проверка на NO_ANSWER производится в getAnswer().
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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